Ist es am günstigsten gelegene zuordnen POST-Variablen an eine wirkliche variable?
Ich habe gerade mein Anmeldeformular für meine website und für die action-Seite, wo alle SQL stattfindet, habe ich einfach übersprungen Zuordnung der POST-variable ist, wie diese...
$username = $_POST['username'];
Statt ich habe gerade mit der POST-Variablen in der gesamten PHP-Seite. Gibt es irgendwelche Risiken oder Fehler, die erfüllt werden können, während üben?
Auch, entschuldigen Sie mich, wenn ich falsche Terminologie...
- Wenn Sie sich zu verwenden, dass die variable in der SQL-Abfrage, es wäre eine gute Idee, um es zu filtern, bevor Sie mit
mysql_real_escape_string()
- Zu einer Variablen zuweisen bedeutet einfach, zu machen, ein Wert unter einem anderen Namen. Also Nein, es spielt keine Rolle, ob Sie laufen
mysql_real_escape_string()
auf$username
oder auf$_POST['username']
so lange, wie Sie halten mit einer dieser Optionen somit innerhalb Ihrer Reichweite. - Vielen Dank für Ihre tolle Kommentare. Ich bin leider mit sql server, damit diese Funktion funktioniert nicht in meinem code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem Risiko, das Sie laufen könnte, ist der Umgang mit raw-Daten des Nutzers, noch gespeichert im raw
$_POST[]
variable. Ich Neige dazu, speichern der raw-Daten arbeite ich mit anderen Variablen, wie du Sie erwähnt hast mit$username = $_POST['username']
so kann ich manipulieren und zu desinfizieren, dass der input effizienter zu gestalten. Anstatt speichern Sie alle Anpassungen, die ich machen, um die Globale$_POST
array, alle meine änderungen werden temporär gespeichert und an einem eher überschaubaren Rahmen.Beispiel:
... ist besser als:
Es ist generell besser, lassen Sie die raw-Daten der Benutzer, wie Sie ist und machen Sie Ihre Anpassungen in anderen Variablen.
Sehe ich keinen Vorteil oder Nachteil. Sobald Sie anfangen ändern die Werte, sollten Sie setzen Sie in Ihre eigenen Variablen, aber wenn Sie nur Lesen Ihnen, Sie können lassen Sie Sie, wo Sie sind. Nur zwei Punkte:
$_POST[...]
, das ist ein guter Grund, um die Werte in eigene Variablen.Nicht unbedingt nehmen Sie die Werte einer nach dem anderen, aber genauso weisen Sie den array-Inhalt in ein array:
Zuweisung an eine andere variable wird Sie gut dienen, wenn Sie sich entscheiden, eine andere Methode der input (json-kodierten Beiträge, xml-rpc, soap, etc.). Dafür, dass Sie bekommen, was Sie benötigen, aus der
$_POST
array in der früh auf und arbeiten mit diesen Werten später wird es einfacher, den code wiederverwenden mit den anderen Eingängen: das einzige, was sich ändern muss ist die Instanziierung dieser Eingänge.Auch, oft Sie wollen, um einen Wert zu ändern etwas (default
trim()
-ing, etc.), was ist besser getan, auf eine lokale variable, die dann ein Element in einem$_POST
array. Sicherlich auf größere Projekte mit Dutzenden von Programmierern ist es meiner Meinung nach eine gute Praxis zu immer die$_POST
array als erhielt, und nicht Geige in es direkt ärgerlich ein hoffnungslos debugging-Mitarbeiter...Risiken und Fehler nicht ändern: es ist immer noch user-Eingaben, die Sie sollten nie Vertrauen, und annehmen, dass der worst-case-Szenario. Standard-SQL-injection -, XSS-und andere Angriffe nicht verhindert, mit dem alleine üben.
Ich persönlich Abneigung dupe Variablen. Halten, was Sie bekam, bis u müssen, um drasticly verwandeln. Dupe Variablen macht es schwieriger zu verfolgen, und nur Verschwendung von Speicher und Zeit. Warum bringen Sie sand an den Strand.
select * from tbl where dies = '". mysql_real_escape_string(trim($_POST['das'])) ."'
$foo = $_POST
Abfälle kaum Speicher, da keine Daten kopiert werden.