来自PHPCMS

sql注入:

[PHP]代码

美高梅电子游戏 ,  正常情况下:

/**
 * 转义 javascript 代码标记
 *
 * @param $str
 * @return mixed
 */
 function trim_script($str) {
 if(is_array($str)){
 foreach ($str as $key => $val){
 $str[$key] = trim_script($val);
 }
    }else{
    $str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '<\\1script\\2>', $str );
 $str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\\1iframe\\2>', $str );
 $str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '<\\1frame\\2>', $str );
 $str = preg_replace ( '/]]\>/si', ']] >', $str );
    }
 return $str;
}

    delete.php?id=3;
    $sql = ‘delete from news where id = ‘.$_GET[‘id’];

  恶意情况:

    delete.php?id=3 or 1;
    $sql = ‘delete from news where id = 3 or 1’; 
——-如此执行后,所有的记录将都被删除

   应该采取相关措施。。。比如用之前先判断是否是数字等等。

要使自己相信,从客户端传来的信息永远是不可靠的!!

转义:

  有时候从客户端传来的数据,可能恶意包含些特殊的字符,比如单引号、斜杠等,所以需要转义,转义成普通的字符,此时就要用到string
addslashes ( string $str
),这个函数可以对某个变量进行转义。但是,如果对数组里的元素进行转义,就用foreach循环数组,如下:

复制代码 代码如下:

  foreach($_POST as $k=>$v) {
      if(is_string($v)) {
        $_POST[$k] = addslashes($v);
      }
  }

  但是如果数组中还包含数组,那就要递归进行转义了,此时用到

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章