Ist mysql_real_escape_string(htmlspecialchars()) wirklich sinnvoll ? warum?
Ist es wirklich nützlich, etwas zu haben wie :
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
warum verwenden wir diese?
wie es zu optimieren ?
Danke
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("nom_db");
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
$passe2 = mysql_real_escape_string(htmlspecialchars($_POST['passe2']));
if($passe == $passe2)
{
script here
}
else
{
echo 'Your password is wrong';
}
?>
- In dem code, den Sie zeigen, beide Funktionen sind völlig unnötig. Ich vermute, dass das nicht der einzige Ort, wo die Variablen verwendet werden, ist es? Können Sie eine ausführlichere Beispiel?
- Dies kann relevant sein: Die Große Flucht (Oder: Was Sie Wissen Müssen, Um die Arbeit Mit Text In Text).
- Ich hatte einen Zweifel, es war nicht logisch für mich. pastebin.com/rJbWmm7m
- Siehe auch stackoverflow.com/questions/110575/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem code-Beispiel ist es nicht sinnvoll, bei allen.
htmlspecialchars
konvertiert Zeichen mit spezieller Bedeutung in HTML in Einheiten. Das ist wichtig, wenn Sie haben einige Texte, die Sie einfügen möchten in ein HTML-Dokument (als es hält, zum Beispiel, Zeichen wie<
behandelt wird als der Anfang des tags, und schützt gegen XSS).mysql_real_escape_string
konvertiert Zeichen mit besonderer Bedeutung in MySQL-SQL-Abfragen in entweicht. Dies ermöglicht das einfügen von beliebigen Zeichenfolgen in eine MySQL-Datenbank sicher (Schutz gegen Fehler und Injektion. Es gibt jedoch bessere Möglichkeiten, das gleiche zu tun.In diesem Fall sind Sie nur der Vergleich von zwei strings. Laufen Sie durch eine Reihe von Umbauten nicht geht, etwas nützliches zu tun.
Sollten Sie nur verwenden
mysql_real_escape_string($var)
bei der übergabe nicht vertrauenswürdigen Variablen, die in einer Datenbank-Abfrage etwa so:Es ist wichtig, dies zu tun zu schützen gegen SQL-injection-Angriffe.
Als für
htmlspecialchars()
dies sollte verwendet werden, wenn Ausgabe nicht vertrauenswürdigen Variablen zu Seite, wird es Streifen aus beliebigen HTML um zu verhindern, dass eine variable ausgeben, die unerwünschte oder gefährliche HTML-oben auf einer Seite (javascript zum Beispiel).In Ihrem Beispiel, Sie brauchen keine Funktionen, da Sie nur einen Vergleich und nicht darum, Sie in einer Datenbank oder auf einer Webseite.
Mithilfe Von htmlspecialchars halten Sie geschützt vor xss-aber es ist der bypass-Methode
wenn Sie fügen Sie dieses Wort zu url
wie
` link name ' ;
bypass verwenden javascript onmouseout onhover anderes, die erfordern, Dass magic_qutoes aus
addslashes & mysql_real_escape_string Schutz vor sql-injection -
durch ignorieren der
'
oder"
Zitateaber der gute Weg, um entfernen Sie diese Wörter in Kleinbuchstaben
meine
$username = strtolower($_GET['Services']);
if(preg_match ("("auswählen|und|oder|union|in|von|Daten|schema|.Benutzer|concat|Gruppe)\", $username)){
die("Error : Hacking-Versuch ");
}
Ihre vollständigen code in der pastebin zeigt, dass die Variablen werden später für eine Datenbank-Abfrage.
mysql_real_escape_string()
ist ein muss hier;htmlspecialchars
ist nicht aus den Gründen, die @Quentin so gut erklärt oben.Verwenden
htmlspecialchars
später in den Ausgang, wenn etwas von dem, was Sie einfügen, bekommt die Ausgabe auf einer HTML-Seite.Mit
htmlspecialchars()
wie Sie ist sinnlos, denn für Streicher:Ist als gleich wie: