(25.07.2018, 06:36)m.scatello schrieb: (24.07.2018, 18:36)basti1012 schrieb: Dann sehe ich nix von htmlspecialchars() ,aber mußte man das bei PDO auch anwenden ???
Alleine das zeugt davon, dass du gefährliches Halbwissen verbreitest. htmlspecialchars wird nur zur Ausgabe benutzt, aber nicht für Datenbank-Aktionen!
Und das du von PDO keine Ahnung hast (muss man auch nicht unbedingt, wenn man nur mit MySQL zu tun hat), hat man ja in anderen Foren schon oft genug gelesen. Aber bitte, dann nehme nicht irgendwelche Scripte aus dem Netz, bastele dran rum und veröffentliche sie nicht!
Ist zwar ein alter Post, aber er ist immer noch zu lesen -> DAHER MUSS ICH HIER WAS LOSWERDEN !!!
Das htmlspecialchars NUR BEI AUSGABE verwendet wird ist
GNADENLOS FALSCH !!!
Denn ohne eine solche Konvertierung eine Eingabe direkt in eine Datenbank zu übernehmen öffnet Tür und Tor für
SQL-Injections !!!
Zwar werden die meisten Injections erst aktiv wenn sie via Ausgabe den Parser durchlaufen, aber direkte SQL-Aufrufe eben nicht !!!
Beispiel: Gibt man bei 'Passwort' z.B. ein: password' OR 1='1'
sieht der SQL-Befehl so aus: sql = "SELECT id FROM users WHERE username='user' AND password=
'password' OR 1='1'
Damit ergibt OR 1='1'
IMMER TRUE und der Bösewicht ist in der Datenbank !!!
Aber mit htmlspecialchars ("SELECT id FROM users WHERE username='user' AND password=
'password' OR 1='1'
wird schlimmstenfalls eine Fehlermeldung provoziert aber kein Zugang erlaubt !!!
Soweit zum Thema "GEFÄHRLICHES HALBWISSEN"
Bei PDO kann dies nicht passieren, da die Anweisung und die Werte getrennt übergeben werden. Somit kann der Wert niemals
Bestandteil der Anweisung werden. Aber auch hier werden die Werte intern 'escaped' um auch ohne unmittelbare Folgen
keinen Schadcode in die Datenbank einzutragen.
(25.07.2018, 06:36)m.scatello schrieb: (24.07.2018, 18:36)basti1012 schrieb: Dann sehe ich nix von htmlspecialchars() ,aber mußte man das bei PDO auch anwenden ???
Alleine das zeugt davon, dass du gefährliches Halbwissen verbreitest. htmlspecialchars wird nur zur Ausgabe benutzt, aber nicht für Datenbank-Aktionen!
Und das du von PDO keine Ahnung hast (muss man auch nicht unbedingt, wenn man nur mit MySQL zu tun hat), hat man ja in anderen Foren schon oft genug gelesen. Aber bitte, dann nehme nicht irgendwelche Scripte aus dem Netz, bastele dran rum und veröffentliche sie nicht!
OK, der Beitrag ist alt - beinhaltet aber
EXTREME FALSCHAUSSAGEN !!!
@ m.scatello:
Wo kommt denn die Weisheit her htmlspecialchars
NUR bei Ausgaben zu verwenden ??? -> GEFÄHRLICHER SCHWACHSINN !!!
Das ist dann für SQL-Injections ein riesiges offenes Scheunentor !!! Bitte nicht so einen Quatsch publizieren - BITTE !!!!!
Beispiel: Bei einer Anmeldung als Passwort folgende Zeichenfolge eingeben:
password' OR 1='1
Ergibt dann folgende SQL-Anweisung: [i]sql = [/i]"SELECT id FROM users WHERE username='user' AND password='password' OR 1='1'
Was kommt bei der boolschen Logik
password OR 1='1' raus =>
TRUE
Und 'true' bedeutet Zugriffserteilung und schon hast du einen unerwünschten Zugriff !!!
Mit htmlspecialchars kann es nicht passieren da dann die Hochkomata in Entities umgewandelt werden und keinen Code mehr darstellen !!!
Ich kann dir 1000de solcher Injections nennen die KEINE AUSGABE brauchen und ohne htmlspecialchars BESTENS FUNKTIONIEREN !!!
Daher 'm.scaletto' -
BITTE BITTE BITTE: Keinen solchen Quatsch in Foren publizieren !!!! BITTE BITTE BITTE
PS: Bei PDO werden Anweisung und Werte getrennt übertragen und können daher kombiniert keine Injection ergeben. Aber auch PDO
(und m.scaletto scheint seinem Beitrag nach ja die Funktion sehr gut zu kennen) ENTSCHÄRFT SONDERZEICHEN und zwar nicht nur
primitiv via htmlspecialchars. Da wird intern escaped, transcodiert und konvertiert auf Teufel komm raus !!!
Für ALLE Forumsleser nochmal im Klartext: JEDE FREMDE EINGABE BITTE IMMER SOFORT VALIDIEREN
Am besten 3fach: HTML <input> mit "pattern" maskieren, mit JavaScript clientseitig auch (regex) und serverseitig mit php (regex, filter...)
Ach ja: Hab mal ein Formular gemacht dass "Idiotensicher" sein sollte:
http://megabyte66.ddns.net/mb_movie/