一、Xss
1、定义:跨站脚步攻击,过滤用户表单提交的数据
2、防范措施:
a.使用PHP内置函数:htmlspecialchars(),strip_tags,trim,addslashes。
b.PHP所有打印的语句如echo,print等,在打印前都要使用htmlentities() 进行过滤,
这样可以防止Xss,注意中文要写htmlentities($name,ENT_NOQUOTES,GB2312)
c.php防注入和XSS攻击通用过滤函数
- <?php
- //php防注入和XSS攻击通用过滤.
- //by qq:831937
- $_GET && SafeFilter($_GET);
- $_POST && SafeFilter($_POST);
- $_COOKIE && SafeFilter($_COOKIE);
- function SafeFilter (&$arr)
- {
- $ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/script/','/javascript/','/vbscript/','/expression/','/applet/','/meta/','/xml/','/blink/','/link/','/style/','/embed/','/object/','/frame/','/layer/','/title/','/bgsound/','/base/','/onload/','/onunload/','/onchange/','/onsubmit/','/onreset/','/onselect/','/onblur/','/onfocus/','/onabort/','/onkeydown/','/onkeypress/','/onkeyup/','/onclick/','/ondblclick/','/onmousedown/','/onmousemove/','/onmouseout/','/onmouseover/','/onmouseup/','/onunload/');
- if (is_array($arr))
- {
- foreach ($arr as $key => $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]);
- }
- }
- }
- }
- ?>
二、CSRF
1、定义:跨站请求伪造(攻击者盗用了你的身份,以你的名义发送恶意请求)
2.CSRF攻击原理及过程如下:
a. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
b.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
c. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
d. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
e. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
3.防范措施:
a.在HTTP请求中增加token并验证
b.在HTTP头中自定义属性并验证
c.验证 HTTP Referer 字段
d.增加验证码机制(图片验证码)
三、SQL注入
1.坚持两个原则
a.对输入的数据进行过滤(addslashes())
b.转义用于向数据库发出的数据(mysql_real_escape_string())
c.使用支持参数化查询语句和占位符的数据库操作类(如PEAR::DB, PDO等),你就会多得到一层保护
d.过滤输入
e.变量类型限制
f.采用PDO操作数据库
e.变量类型限制
f.采用PDO操作数据库
g.配置好数据库的用户权限
四、就是在PDO底层是如何处理该sql语句的,可以这么有效的防止注入问题
来源:CSDN
作者:爬虫小霸王
链接:https://blog.csdn.net/angle_jian/article/details/79378867