Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 15:36

  • Please register to post and access all features, it's quick, easy and FREE!


PHP $_POST's escapen PDO

Reply
 
Old   #1


 
elite*gold: 10
Join Date: Mar 2013
Posts: 724
Received Thanks: 276
PHP $_POST's escapen PDO

Moin,
zuerst hoffe ich, dass ich hier richtig bin.
Ich möchte gerne meine PHP-Scripte gegen SQL-Injection sichern.
Ich bin die letzten Jahre auf PHP 5.2 kleben geblieben. Nun bin ich aber auf die neueren PHP Versionen aufgestiegen und verwende nun PDO.

Bei PHP 5.2 und mssql_query konnte ich ja einfach die escape function nutzen.
PHP Code:
function ms_escape_string($data) {
        if ( !isset(
$data) or empty($data) ) return '';
        if ( 
is_numeric($data) ) return $data;

        
$non_displayables = array(
            
'/%0[0-8bcef]/',            // url encoded 00-08, 11, 12, 14, 15
            
'/%1[0-9a-f]/',             // url encoded 16-31
            
'/[\x00-\x08]/',            // 00-08
            
'/\x0b/',                   // 11
            
'/\x0c/',                   // 12
            
'/[\x0e-\x1f]/'             // 14-31
        
);
        foreach ( 
$non_displayables as $regex )
            
$data preg_replace$regex''$data );
        
$data str_replace("'""''"$data );
        return 
$data;
    } 
Bei PDO schaut das ja etwas anders aus.

Ich hörte, wenn ich mithilfe von STR Variblen und mithilfe von bindParam den Inhalt in meine Query bringe, müsste ich die Variablen nichtmehr Escapen.

Bsp.
PHP Code:
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories'$caloriesPDO::PARAM_INT);
$sth->bindParam(':colour'$colourPDO::PARAM_STR12);
$sth->execute(); 
Könnte mir jemand vielleicht eine genaue Erklärung geben wann ich in dem Falle escapen muss? Und ob ich bei nutzung dieser Funktion überhaupt Escapen muss?

Vielen dank.

Liebe Grüße



.:Unix:. is offline  
Old 12/05/2018, 20:43   #2
SweetnessOverflow セラニエル



 
elite*gold: 2222
The Black Market: 203/1/0
Join Date: May 2010
Posts: 6,734
Received Thanks: 4,983
Arrow General Coding -> Web Development

#moved


Serraniel is offline  
Old 12/05/2018, 22:30   #3

 
elite*gold: 2
The Black Market: 230/0/0
Join Date: Apr 2011
Posts: 9,033
Received Thanks: 2,102
Quote:
Originally Posted by .:Unix:. View Post
Moin,
zuerst hoffe ich, dass ich hier richtig bin.
Ich möchte gerne meine PHP-Scripte gegen SQL-Injection sichern.
Ich bin die letzten Jahre auf PHP 5.2 kleben geblieben. Nun bin ich aber auf die neueren PHP Versionen aufgestiegen und verwende nun PDO.

Bei PHP 5.2 und mssql_query konnte ich ja einfach die escape function nutzen.
PHP Code:
function ms_escape_string($data) {
        if ( !isset(
$data) or empty($data) ) return '';
        if ( 
is_numeric($data) ) return $data;

        
$non_displayables = array(
            
'/%0[0-8bcef]/',            // url encoded 00-08, 11, 12, 14, 15
            
'/%1[0-9a-f]/',             // url encoded 16-31
            
'/[\x00-\x08]/',            // 00-08
            
'/\x0b/',                   // 11
            
'/\x0c/',                   // 12
            
'/[\x0e-\x1f]/'             // 14-31
        
);
        foreach ( 
$non_displayables as $regex )
            
$data preg_replace$regex''$data );
        
$data str_replace("'""''"$data );
        return 
$data;
    } 
Bei PDO schaut das ja etwas anders aus.

Ich hörte, wenn ich mithilfe von STR Variblen und mithilfe von bindParam den Inhalt in meine Query bringe, müsste ich die Variablen nichtmehr Escapen.

Bsp.
PHP Code:
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories'$caloriesPDO::PARAM_INT);
$sth->bindParam(':colour'$colourPDO::PARAM_STR12);
$sth->execute(); 
Könnte mir jemand vielleicht eine genaue Erklärung geben wann ich in dem Falle escapen muss? Und ob ich bei nutzung dieser Funktion überhaupt Escapen muss?

Vielen dank.

Liebe Grüße
Kurz und Knapp:
Wenn du PDO mit bindValue/bindParam nutzt musst du nichts escapen.
.ƒaℓsє. is offline  
Thanks
2 Users
Reply



« iOS Chrome erkennen | In sich selbst aktualisieren »

Similar Threads
[PHP] $_POST funktioniert nicht
04/24/2016 - Web Development - 3 Replies
Hi, hab folgendes Problem: Habe ein Script, welches per $_POST; halt die POST DATA bekommen soll. Nun aber bekomme ich keine POST DATA und die SQL row bleibt blank. Code: <?php
VB.Net String nicht "escapen"
06/05/2014 - .NET Languages - 10 Replies
Hab noch nicht so viel mit regex gemacht vorallem nicht in VB. Teil eines Regex patterns ist "\Q" was allerdings diesen fehler verursacht: Ein Ausnahmefehler des Typs "System.ArgumentException" ist in System.dll aufgetreten. Zusätzliche Informationen: "\Q" wird analysiert - Unbekannte Escape-Zeichenfolge \Q. Damit kann ich nichts anfangen.... Habe schon gegoogelt aber nichts dazu gefunden (vielleicht auch das falsche gesucht) Vielleicht könnt ihr mir ja helfen
PHP PDO MSSQL Fetches
11/09/2011 - Web Development - 0 Replies
Hallo @all, ich bin gerade auf ein Problem gestoßen und hoffe dass mir jemand helfen kann. Man kann ja, wenn man PHP und MySql nutzt eine Abfrage machen und während man diese Abfrage ausgibt kann man mit diesen Daten ja eine weitere Abfrage starten (während man sich noch in der Schleife zum ausgeben der Daten befindet). Ich dachte dass es mit PDO und MSSQL auch geht, was aber leider nicht der Fall ist. Denn da hatte ich als Test eine Abfrage gemacht und während ich mit einer Schleife...
Php mehrere $_Post[]
07/11/2011 - Web Development - 5 Replies
Hey, ich möchte ein Voteskript schreiben, jedoch scheitere ich daran, bei der Überprüfung, ob einer der Radio Button ausgewählt ist, ich habe es folgendermaßen probiert: if (!empty($_POST)) or (!empty($_POST))or (!empty($_POST)) or (!empty($_POST))or (!empty($_POST)) { Es liegt sicher an dem Or das habe ich bereits überprüft, und das zweite Problem ist, dann wie ich das in die Mysql Tabelle eintragen lassen kann, also das er in die erste Spalte, eins der oberen überprüften Ids...
D2NT-Script Slash escapen?
06/27/2011 - Diablo 2 Programming - 7 Replies
Servus, ich hätte da eine Frage... . Und zwar versuche ich ein FriendlessLeech-Script zum laufen zu bekommen. In einem Teil geht es darum, einen Suchfilter einzustellen. In meinem Fall sieht der so aus: var extrafilters = ; Allerdings funktioniert es nicht. Das //Myrun1 gehört zum Filter, doch ich glaube, dass das Doubeslash den Fehler verursacht. Muss man Slash / Doubleslash irgendwie escapen? Nicht, dass es als Kommentar interpretiert wird. Grüßle



All times are GMT +1. The time now is 15:36.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.
 
Eps1 3:10 to Yuma (2007) HD-720p | Xiaomi Redmi 6A, 4G - 16GB+2GB RAM - Face Identification 5.45 inch - 13 MP Camera Dual SIM (Gold). -33% KSh 9,399 KSh 13,999 (7) Buy now | OEM Original Samsung Galaxy S6 S7 Edge S8 S9 + Note 8 Headset Earphone Earbud