Forum ›PHP

Aplicarea la calorii

profesorul mi-a spus că munca mea nu este bună datorită faptului că există injecție SQL,

aplicare

dar am date tratate în fiecare funcție folosind htmlspecialchar, dar îmi cere să o scriu prin bindValue.
Poți să-mi explici diferența?

# 1 Student
Funcția htmlspecialchars () nu rezolvă problema, ci doar cauzează caracterele bazei de date care nu îi aparțin.

Nu folosesc metoda bindValue (), tot ce am nevoie este metoda execute (), care este mai clară IMHO și funcționează mai bine cu.

Aș trece condiția separat, exemplul dvs. va șterge ușor din greșeală întregul tabel. Folosește-l mai degrabă

Ce caută acolo urât „global”?

htmlspecialchars - scapă de valoare pentru html
bindValue - scapă de valoarea pentru pdo (și cel mai probabil o face și o execută, o fac puțin diferit); nu trebuie să utilizați bindvalue dacă scăpați de el într-un alt mod, ceea ce nu se face prea mult în școală, dar

urlencode - scapă de valoare pentru adresa URL (alte funcții)

Dar uneori este cazul în care doriți să aveți interogarea sql acolo. Nu trebuie introdus de utilizator. Sau ar trebui să o facă cel puțin printr-o parolă.

Aceste hacks, pot fi fie intenționate, fie greșite. Când renunțați, puteți introduce fișierul acolo din greșeală, dar aș dori să pun un alt cod acolo, am nevoie de un cod pentru a stoca datele de conectare
- înregistrați apăsarea tastei
- trimiteți la fiecare 5 secunde la adresa URL

# 5 Petru
Este uimitor ca amestecarea SQL și HTML într-o singură grămadă ca aceasta. O mare sursă de probleme.

# 7 Kit
Nu inteleg. Ce comentează în mod special?

Tocmai am încercat să arăt cum să-l folosesc și ar trebui să fie mai clar din el de ce codul său original este greșit și că funcția este utilizată pentru ceva complet diferit. Personal, am funcții de scăpare numite escape. Poate o voi înconjura de clasă. Chiar nu-mi place php-ul când vreau să scap ceva, căutați cum au numit autorii funcția:) Și în 90% din cazuri nu pot compune o interogare prin bind sau executați. Din păcate, clientul poate veni cu astfel de condiții încât trebuie să compun interogarea ca un șir. Atunci folosesc escapeSqlKey, escapeSqlValue, pe care l-am redenumit. În mod similar, am escapeUrlValue, escapeHtmlValue, escapeJsValue, escapeRegExpValue. (posibil fara valoare, pac in plus fata de sql este mereu valoare:))