Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 andrewrk
andrewrk

Ce trebuie să scape când trimit o interogare?

Când executați o interogare SQL, trebuie să vă curățați șirurile sau utilizatorii pot executa SQL rău intenționat pe site-ul dvs. Web.

Eu de obicei am doar o funcție escape_string (blah), care:

  • Înlocuiește evadări ( \ ) cu evadări dublu ( \\ ).
  • Înlocuiește ghilimele simple ( ') cu un citat escape ( \' ).

Este aceasta adecvată? Există o gaură în codul meu? Există o bibliotecă care poate face asta rapid și fiabil pentru mine?

Aș dori să văd soluții grațioase în Perl, Java și PHP.

19 2008-08-05T18:45:46+00:00 10
Programare
oracle
mysql
security
Comentarii la întrebare (0)
Mark Biek
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2690

Ce limbă folosiți? Se pare că aproape toți dintre ei au built-in funcții de evacuare SQL care ar fi mai bine de utilizat.

De exemplu, PHP are mysql_real_escape_string și < a href = "http://us2.php.net/manual/en/function.addslashes.php" rel = "nofollow noreferrer"> adaugă-lăgări .

0
0
Comentarii (0)
GateKiller
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2691

Mi-ar scuza, de asemenea, comentariile (dublă linie)

--
0
0
Comentarii (0)
Karl Seguin
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2693

Ești mai bine să folosiți declarații pregătite cu substituenți. Folosiți PHP, .NET ... oricum, declarațiile pregătite vor oferi mai multă siguranță, dar aș putea oferi o mostră.

0
0
Comentarii (0)
Bob
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2696

Nu sunt sigur dacă MySql acceptă interogări parametrizate, dacă da, trebuie să depuneți eforturi pentru a merge pe acest traseu. Acest lucru va asigura că utilizatorii nu pot face nimic rău intenționat.

În caz contrar, unele caractere "rele" în plus față de ceea ce ați menționat vor fi punct și virgulă (;) și comentarii (- și / * * /).

0
0
Comentarii (0)
TiTi
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2727

În PHP, îl folosesc pe acesta și voi aprecia orice comentariu despre el:

function quote_smart($valeur) 
{ 
    if (get_magic_quotes_gpc()) 
        $valeur = stripslashes($valeur); 

    if (!is_numeric($valeur)) 
        $valeur = mysql_real_escape_string($valeur); 

    return $valeur; 
}


$IdS = quote_smart($_POST['theID']); 
$sql = " 
SELECT * FROM Students 
WHERE IdStudent={$IdS}; 
";

Necesită încă o verificare dacă un câmp poate fi NULL:

$picture = NULL;
$theidyouwant = 7;
$Name = 'WOOD';


if(is_null($picture)) 
    $p = 'NULL'; 
else
    $p = "'".quote_smart($picture)."'"; 

$IdS = quote_smart($theidyouwant);

$requete = "SELECT * FROM Students
    WHERE IdStudent={$IdS} AND
    PictureStudent={$p} AND
    NameStudent='{$Name}';
    ";

That's it enjoy ! (hope the post will correctly send underscores and not _ ;)

0
0
Comentarii (0)
cmcculloh
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2734

Un lucru minunat de utilizat în PHP este DOP . Este nevoie de o mulțime de presupuneri de a se ocupa de securizarea SQL (și toate chestiile dvs. SQL în general). Acesta susține declarații pregătite, care merg foarte departe spre atenuarea atacurilor SQL Injection.

A great primer on PDO is included in the book The PHP Anthology 101 Essential Tips, Tricks & Hacks by Davey Shafik etc. 2nd Ed. Makes learning a breeze and is excellent as a reference. I don't even have to think about anything other than the actual SQL Query anymore.

0
0
Comentarii (0)
Mark Harrison
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2741

Pentru securitate maximă, performanță și corectitudine, folosiți declarații pregătite. Iată cum puteți face acest lucru cu multe exemple în diferite limbi, inclusiv PHP:

https://stackoverflow.com/questions/1973/ ce-este-the-best-way-to-Evitați-sql-injectare-atacuri

0
0
Comentarii (0)
Steve Tranby
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2752

Utilizați interogări pregătite / parametrizate!

0
0
Comentarii (0)
BCS
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#11419

API-ul MySQL C are propriul său mysql_escape_string () . Folosirea sau echivalentul ar fi cea mai bună.

0
0
Comentarii (0)
Utilizator anonim
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#77190

Utilizați declarații pregătite.

0
0
Comentarii (0)
AquilaX
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#200052

În interogarea MySQL, atunci când utilizați LIKE, asigurați-vă că ați scăpat de caracterele "_" deoarece nu este scăpat de mysql_real_escape_string.

Pentru referință, consultați aici

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire