Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysql_escape_string whole post array?

I was wondering is it possible to just my_sql_escape string the whole $_POST and $_GET array so you dont miss any variables?

Not sure how to test it or I would've myself. Thanks!

like image 295
NoviceCoding Avatar asked Jan 12 '11 04:01

NoviceCoding


3 Answers

I would use the array_walk() function. It's better suited because modifies the POST superglobal so any future uses are sanitized.

array_walk_recursive( $_POST, 'mysql_real_escape_string' );

However, make sure that you don't rely on this line to completely protect your database from attacks. The best protection is limiting character sets for certain fields. Ex. Email's don't have quotes in them (so only allow letters, numbers, @, dashes, etc.) and names don't have parenthesis in them (so only allow letters and selected special characters)

EDIT: Changed array_walk() to array_walk_recursive() thanks to @Johan's suggestion. Props to him.

like image 158
Bailey Parker Avatar answered Oct 14 '22 09:10

Bailey Parker


$escaped_POST = array_map('mysql_real_escape_string', $_POST);

Though, I would recommend using MySQLi instead.

like image 45
Kevin Avatar answered Oct 14 '22 10:10

Kevin


you can use

foreach(array_keys($_POST) as $key)
{

  $clean[$key] = mysql_real_escape_string($_POST[$key]);

}

and after this to access post data use echo $clean['name'];

like image 32
Bhanu Prakash Pandey Avatar answered Oct 14 '22 10:10

Bhanu Prakash Pandey