PHP中怎样避免SQL注入漏洞和XSS跨站脚本攻击漏洞

漏洞危害: 黑客利用精心组织的SQL语句,通过Web表单注入的Web应用中,从而获取后台DB的访问与存取权限。获取相应的权限之后,可以对网页和数据库进行进一步的篡改、挂马和跳板攻击行为。

防止SQL注入代码:

主要是利用magic_quotes_gpc指令或它的搭挡addslashes()函数;

如果要自己拼SQL语句,一定要自己再过滤一下【addslashes】,也不是直接就能过滤,还要考虑PHP服务器有没有开启自动过滤的功能,如果服务器已经开启自动过滤的功能我们就不能再过滤,只有没有开启时才需要手动过滤:

 $value) 
     {
        if (!is_array($value))
        {
          if (!get_magic_quotes_gpc())  //不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。
          {
             $value  = addslashes($value); //给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)
             加上反斜线转义
          }
          $value       = preg_replace($ra,'',$value);     //删除非打印字符,粗暴式过滤xss可疑字符串
          $arr[$key]     = htmlentities(strip_tags($value)); //去除 HTML 和 PHP 标记并转换为 HTML 实体
        }
        else
        {
          SafeFilter($arr[$key]);
        }
     }
   }
}
?>

防止XSS跨站攻击代码:

XSS,全称为Cross Site Script,跨站脚本攻击,是WEB程序中一种常见的漏洞。其主要的攻击手段是在在利用网站上的可由用户输入信息的地方,恶意注入含有攻击性的脚本,达到攻击网站或者窃取用户cookied等隐私信息的目的。

XSS漏洞主要分为两种类型,一种是Stored XSS, 另一种是反射型 XSS。

第一种举个简单的例子就是BBS网站,黑客可以利用留言的功能,发表以下内容:

  对系统而言,它认为这和其他的留言一样都只是字符串。但是当有用户访问到这个页面时,浏览器会把这段留言当成html内容来解析。因此就执行了其中的js脚本。

而反射型 XSS则是利用点击链接或是提交一些内容来达到攻击的目的。

比如我有以下一个页面:

  当用户在input框中输入:    "

你可能感兴趣的:(php)