WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   [PHP] Bästa sätt att undvika SQL injections? (https://www.wn.se/forum/showthread.php?t=27368)

hallis 2008-03-02 16:16

Du behöver inte escape'a varje enskild POST-/GET-värde.
Citat:

$_POST = mysql_real_escape_string($_POST);
$_GET = mysql_real_escape_string($_GET);


Magnus_A 2008-03-02 17:57

mysql(i)_real_escape_string($varlabel,$link_identi fier) heter det,
där $link_identifier är en handler till en uppkoppling av databasen. Om man inte skickar med den så kan det bli fel.

Lumax 2008-03-02 23:09

Citat:

Originally posted by Magnus_A@Mar 2 2008, 18:57
mysql(i)_real_escape_string($varlabel,$link_identi fier) heter det,
där $link_identifier är en handler till en uppkoppling av databasen. Om man inte skickar med den så kan det bli fel.

Enbart om man har flera kopplingar, då används den senaste.

Adam N 2008-03-03 04:58

Citat:

Ursprungligen postat av Fredrik S
Citat:

Ursprungligen postat av Magnus_A
mysql(i)_real_escape_string($varlabel,$link_identi fier) heter det,
där $link_identifier är en handler till en uppkoppling av databasen. Om man inte skickar med den så kan det bli fel.

Enbart om man har flera kopplingar, då används den senaste.

Förstår inte på vilket sätt det kan bli fel. Exempel? :unsure:

Lumax 2008-03-03 10:35

mysql(i)_real_escape_string() fungerar lite olika beroende på vilken teckentabell databasen använder. Vilka tecken som anses "problematiska" är alltså olika beroende på ISO-8859-1 och UTF-8 t.ex.
Så om du har två anslutningar mot olika databaser som kör olika charsets så kan du få situationer där SQL-injections är möjliga om du inte hänvisar till rätt databasanslutning när du kör mysql(i)_real_escape_string().

Detta är dock väldigt ovanligt eftersom det flesta enbart har en databas som scriptet jobbar mot, och i de fall man har flera databaser så har dessa i oftast samma charset.

Men visst, Magnus_A har en poäng. Det är skadar inte att ta med link identifier.

Magnus_A 2008-03-03 10:49

Citat:

Ursprungligen postat av Adam N
Citat:

Originally posted by -Fredrik S@Mar 2 2008, 23:09
Citat:

Ursprungligen postat av Magnus_A
mysql(i)_real_escape_string($varlabel,$link_identi fier) heter det,
där $link_identifier är en handler till en uppkoppling av databasen. Om man inte skickar med den så kan det bli fel.

Enbart om man har flera kopplingar, då används den senaste.


Förstår inte på vilket sätt det kan bli fel. Exempel? :unsure:

Typiskt felmeddelande om man inte skriver rätt:

<?php
echo mysqli_real_escape_string('hej');
?>
Utan föregående uppkoppling så försöker php logga in utan lösenord, sällan en bra ide:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Användare 'www-data'@'localhost' är ej berättigad att logga in (Använder lösen: NO) in /var/www/*** on line *

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www/**** on line *

Och för mysqli:

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /var/www****


Alla tider är GMT +2. Klockan är nu 21:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson