php防sql注入小记

 

a. 打开magic_quotes_gpc或使用addslashes()函数

判断magic_quotes_gpc是否打开,如果没有打开则用addslashes()函数进行处理。
//代码 function stripslashes_array($array) { if (is_array($array)) { foreach ($array as $k => $v) { $array[$k] = stripslashes_array($v); } } else if (is_string($array)) { $array = stripslashes($array); } return $array; } // 判断 magic_quotes_gpc 状态 if (@get_magic_quotes_gpc()) { $_GET = stripslashes_array($_GET); $_POST = stripslashes_array($_POST); $_COOKIE = stripslashes_array($_COOKIE); } b.对特殊字符进行转义 $keywords = str_replace("_","\_",$keywords);//转义掉”_” $keywords = str_replace("%","\%",$keywords);//转义掉”%” c. 强制字符格式(类型) 在很多时候我们要用到类似xxx.php?id=xxx这样的URL,一般来说$id都是整型变量,为了防范攻击者把$id篡改成攻击语句,我们要尽量强制变量,代码如下: PHP防范SQL注入的代码 $id=intval($_GET[‘id’]); d.SQL语句中包含变量加引号 e.URL伪静态化 f.使用PDO(PHP Data Objects )进行预处理:
//代码 $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute(array(':name' => $name)); foreach ($stmt as $row) { // do something with $row }

  

你可能感兴趣的:(sql注入)