naja entweder mit den was du meintest oder meine erste...sind doch 2 varianten in meinen augen....
Ankündigung
Einklappen
Keine Ankündigung bisher.
PHP funktion gegen SQL-Injection
Einklappen
Neue Werbung 2019
Einklappen
X
-
22hase
-
22hase
Zitat von David Beitrag anzeigenNa meine Meinung ist eben: verwende prepared statements. Trifft auf Variante 1 nicht zu, bleibt also nur noch eine übrig
also jetzt bin ich wieder ganz verwirrt
also entweder meine variante ODER prepared statements.
oder wie jetzt ?
Kommentar
-
22hase
Zitat von David Beitrag anzeigenDeine Variante ist ohne prepared statements. Wenn Du mich nach meiner Meinung fragst, sage ich: "Nimm eine Variante mit prepared statements". Was ist daran nicht zu verstehen?
Kommentar
-
PHP-Code:$stmt = $pdo->prepare('INSERT INTO tbl (x,y,z) VALUES(?,?,?)');
$stmt->execute( array($_POST['x'], $_POST['y'], $_POST['z']) );
Kommentar
-
22hase
Zitat von David Beitrag anzeigenPHP-Code:$stmt = $pdo->prepare('INSERT INTO tbl (x,y,z) VALUES(?,?,?)');
$stmt->execute( array($_POST['x'], $_POST['y'], $_POST['z']) );
Kommentar
-
22hase
werd wohl vorerst doch bei der ersten variante bleiben..
also das hab ich jetzt mal fix gemacht nur mit einen formularfeld.
PHP-Code:<?php
function sql_protect($eingabe)
{
//Überflüssige Maskierungen aus der übergebenen Variablen entfernen
if(get_magic_quotes_gpc())
{
$eingabe = stripslashes($_POST['name']);
$eingabe = str_replace('%', '\%', $eingabe);
$eingabe = str_replace('_', '\_', $eingabe);
}
else
{
$eingabe = $_POST['name'];
}
return $eingabe;
}
if(isset($_POST['Abschicken']))
{
$sql = "SELECT vname FROM namen WHERE vname = '".mysql_real_escape_string(sql_protect($eingabe),$con)."'";
$erg = mysql_query($sql);
if(!$erg)
{
exit(mysql_error());
}
else
{
$ergebniss = sql_protect($eingabe);
$test = mysql_fetch_object($erg);
echo "Ihre Eingabe: $ergebniss<br>";
echo "Datenbankergebniss: $test->airpCode <br>";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Name <input name="name" type="text">
<input name="Abschicken" type="submit" value="eintrag">
</form>
das mit den str_replace hab ich dewegen gemachtHinweis: mysql_real_escape_string() maskiert weder % noch _. Diese Zeichen werden in MySQL als Platzhalter interpretiert, wenn sie mit LIKE, GRANT oder REVOKE kombiniert werden.
Kommentar
-
PHP-Code:function sql_protect($eingabe)
{
//Überflüssige Maskierungen aus der übergebenen Variablen entfernen
if(get_magic_quotes_gpc())
{
$eingabe = stripslashes($_POST['name']);
$eingabe = str_replace('%', '\%', $eingabe);
$eingabe = str_replace('_', '\_', $eingabe);
}
else
{
$eingabe = $_POST['name'];
}
return $eingabe;
}
oder es ist einfach nur müll
- Sie hat einen Parameter, benutzt aber einen POST Wert
- Sie benutzt 'name' als festen Schlüssel (welchen Mehrwert hat da noch die Funktion)
- Sie "escaped" % und _ mit \, was totaler Humbug ist. Handbuch lesen!
- Sie führt bestimmte Funktionen nur abhängig von get_magic_quotes_gpc() aus, aber nicht nur welche, die magic quotes betreffen!
- Sie heißt sql_protect und hat überhaupt nix mir sql zu tun[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
22hase
ok dann amch ich es mal schritt weise, fals es ok ist
PHP-Code:$eingabe = $_POST["name"];
function sql_protect($eingabe)
{
//Überflüssige Maskierungen aus der übergebenen Variablen entfernen
if(get_magic_quotes_gpc())
{
$eingabe = stripslashes($eingabe);
}
return $eingabe;
}
Kommentar
-
Bevor Du jetzt weitermachst: Was genau willst Du sparen mit dieser Funktion?[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
22hase
wie meinste sparen?
ich würd gern ne funktion schrieben die injection verhindert, egal ob über die url oder formulare..
ich habe ja gegoogelt und versucht das anzuwenden was ich gefunden habe, aber anscheind wende ich es nur nicht richtig an, sehe ich auch ein deswegen suche ich ja auch hier hilfe..
Kommentar
-
ich würd gern ne funktion schrieben die injection verhindert
Kommentar
-
ich würd gern ne funktion schrieben die injection verhindert
% zu \% pauschal anzuwenden ist falsch. Nicht alle Werte gehen in LIKE Statements ein und so schreibst Du fehlerhafte Eingaben in Deine Datenbank.[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
Kommentar