Ankündigung
Einklappen
Keine Ankündigung bisher.
PDO prepare und (MySQL-)SQL-Injections?
Einklappen
Neue Werbung 2019
Einklappen
X
-
is interessant zu wissen aber
Wrapping Up
If you:
Use Modern Versions of MySQL (late 5.1, all 5.5, 5.6, etc) AND PDO's DSN charset parameter (in PHP ≥ 5.3.6)
OR
Don't use a vulnerable character set for connection encoding (you only use utf8 / latin1 / ascii / etc)
OR
Enable NO_BACKSLASH_ESCAPES SQL mode
You're 100% safe.PHP-Code:$pdo->query('SET NAMES gbk');
apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]
Kommentar
-
Alter Hut, 0815 Anwendungen die auf UTF-8 Datenbankseitig, Anwendungssetig und Clientseitig setzen sind von dem Problem nicht betroffen.[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
-
Ja, ist schon etwas älter. Für mich war die Schlagzeile jetzt
The important thing to realize here is that PDO by default does NOT do true prepared statements. It emulates them (for MySQL). Therefore, PDO internally builds the query string, calling mysql_real_escape_string() (the MySQL C API function) on each bound string value.
Kommentar
-
Was ja schwachfug wäre, da die MySQL C API schon seit 3.2.* mysql_stmt_bind_param() kann was ein nutzen von mysql_real_escape_string() in kombination mit mysql_stmt_bind_param() in verfälschte Values resultieren lassen würde.[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
-
Zitat von monolith Beitrag anzeigenVielleicht auch einfach nicht mehr up-to-date? Die Antwort ist von April 2012.[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
-
Zitat von rkr Beitrag anzeigenJa, ist schon etwas älter. Für mich war die Schlagzeile jetzt
dass es dabei dann auf mysql_real_escape_string (die C funktion) zurückgreift ist doch nur logisch.
hab ich hier irgendwas missverstanden?liebe Grüße
Fräulein Dingsda
Kommentar
-
Zitat von dingsda Beitrag anzeigenich versteh nicht was daran eine schlagzeile ist. ist das nicht schon allgemein bekannt, dass pdo die prepared queries bei mysql nur emuliert, wenn man nicht explizit ATTR_EMULATE_PREPARES auf false setzt.
Kommentar
-
Zitat von Doku zu setAttributePDO::ATTR_EMULATE_PREPARES Enables or disables emulation of prepared statements. Some drivers do not support native prepared statements or have limited support for them. Use this setting to force PDO to either always emulate prepared statements (if TRUE), or to try to use native prepared statements (if FALSE). It will always fall back to emulating the prepared statement if the driver cannot successfully prepare the current query. Requires bool.
Müsste man aber evtl. über getAttribute herausfinden können...Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Trainmaster
Kommentar
-
Oha... Wieder was dazu gelernt...Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
Kommentar