Cum de a stabili că site-ul a fost supus de injectare sql - totul despre web design pe
![Cum de a stabili că site-ul a fost supus de injectare sql - totul despre web design pentru a (atac) Cum de a stabili că site-ul a fost supus de injectare sql - totul despre web design pe](https://webp.images-on-off.com/25/463/418x335_7sjypbfqh9lo6pf0qqg8.webp)
Analiza log a arătat că a suferit o injecție SQL exploatează malware într-una dintre interogări SQL pe site.
Acest lucru a fost agravată de faptul că, până la site-ul meu a fost condus de oameni care sunt de fapt pe el și să învețe să programului. Codul de mare, pe care cred că nu se încadrează nici. Și undeva acolo, a existat o gaură.
Despre cum am rezolvat această problemă și vor fi discutate în acest articol.
Pentru a începe cu, un mic program educațional, care este injecție SQL.
Ce este SQL injection
Ia un cod pseudo
Există un control care intval trebuie să returneze un număr întreg, iar dacă ID-ul nu este un număr, condiția nu funcționează, iar cererea nu va fi executat.
Și acest lucru este lucrări adevărat dacă ați face o astfel de cerere
condiția nu este îndeplinită: intval ( „nou“) returnează 0.
Se pare că acest lucru este suficient. Dar întrebarea este ce se va întâmpla în următoarea cerere
Prin urmare, gaura de securitate. Prin aceasta, aveți posibilitatea să inserați orice interogare SQL. Până pentru a șterge de la știri
Metode de tratare a SQL injection
Cea mai sigura cale de a contracara acest tip de atac - o examinare a tuturor lucrurilor. Ie toate variabilele care sunt inserate în codul trecut prin funcția mysql_real_escape_string
o astfel de cerere nu este nimic mai gravă decât la erori în cerere nu este amenințată. În acest exemplu, vom vedea că id-ul poate fi doar un număr întreg, deci este o soluție mai corectă este următorul cod
Nu duplicat codul pentru a verifica, dar nu este, de asemenea, într-un caz comă nu trebuie omisă. Pur și simplu a verifica o variabilă decât pentru a forța serverul MySQL pentru a efectua o solicitare suplimentară.
Mai devreme sau mai târziu, o astfel de metodă se va introduce în obiceiul. În serviciul meu, a fost făcut doar o astfel de greșeală. Codul a fost pur și simplu o variabilă de cerere get.
Cu codul lor clar. Aici noi stăpânim situația. Într-un proiect mai mult sau mai puțin mare, utilizează un număr mare de biblioteci terțe părți sau aplicații: ckeditor, ckfinder, plugin-uri jQuery. culegători, ambalatori, daunloudery, sistem de statistici, phpMyAdmin, etc.
Și ei au, de asemenea, găuri. Editați mâinile lor posibilitatea de a spune nu, și dacă există ceva nedorit să facă acest lucru.
Este mult mai ușor de a proteja resursa ca un întreg. De exemplu, meu preferat CMS Danneo. este pus în aplicare la nivel de API și în cererea GET sau POST, pur și simplu nu se poate insera cuvinte cheie pentru interogări SQL.
Printre altele, acest cod vă protejează de alte atacuri, css, etc.
Ca urmare, în cazul în care solicitarea a fost interzisă cuvinte, codul va returna o eroare 500, și va arunca o excepție. Acest lucru nu este cea mai bună soluție. În cazul în care toate variabilele de cod de evacuare, și asta e bine, nu va fi de prisos pentru a informa administratorul tentativelor de injectare și de a da un atacator, de exemplu 404.
De exemplu, în clasa mea add-on mysql. Tocmai am adăugat metoda de evacuare, și în cazul în care devine datele care conțin cuvinte interzise, o scrisoare este trimis la căsuța poștală administratorul site-ului, acesta este trimis la utilizator ip-, variabila pe care o protecție declanșată.
acest scenariu în timp util mi-avertisment despre încercarea de a hack viața mea. Folosind informațiile din scrisoarea, puteți bloca sau rău intenționat IP pentru a explora acele locuri în care există un atac.
Asta e, probabil, toate măsurile, după care site-ul dvs. nu va mai fi atât de ușor să se crape.
Vă doresc mult noroc în această profesie periculoasă)