1,SQL 注入: 参照下面的链接
http://www.cnblogs.com/chenhaoyu/p/8758888.html
2, 跨网站脚本攻击 (Cross Site Scripting, XSS)
攻击者将恶意代码注入到网页上, 其他用户在加载网页时就会执行代码, 攻击者可能得到包括但不限于更高的权限 (如执行一些操作), 私密网页内容, 会话和 cookie 等各种内容. 这些恶意代码通常是 JavaScript,HTML 以及其他客户端脚本语言.
如果传入一段脚本 < script>[code]</script>, 那么脚本也会执行.
防范方法:
1, 使用 htmlspecialchars 函数将特殊字符转换成 HTML 编码, 过滤输出的变量
2, 如果想更彻底的过滤, 使用 HTMLPurifire 插件过滤, 专门用来防止 xss 攻击的插件
3, 跨网站请求伪造攻击 (Cross Site Request Forgeries, CSRF)
攻击者伪造目标用户的 HTTP 请求, 然后此请求发送到有 CSRF 漏洞的网站, 网站执行此请求后, 引发跨站请求伪造攻击. 攻击者利用隐蔽的 HTTP 连接, 让目标用户在不注意的情况下单击这个链接, 由于是用户自己点击的, 而他又是合法用户拥有合法权限, 所以目标用户能够在网站内执行特定的 HTTP 链接, 从而达到攻击者的目的.
与 xss 的不同点:
它与 XSS 的攻击方法不同, XSS 利用漏洞影响站点内的用户, 攻击目标是同一站点内的用户者, 而 CSRF 通过伪装成受害用户发送恶意请求来影响 web 系统中受害用户的利益.
简单说下原理: 首先有一个站点 A, 用户访问了其中一个页面, URL 为 / sdad/asd?uid=1&username=ww, 又访问了一个站点 B 的其中一个页面, 而这个页面中有一个 img 标签, 如
<img src="/sdad/asd?uid=1&username=bbbb">, 如果 A 站点的那个页面是修改用户名操作, 那么当用户访问站点 B 的这个页面时, 就触发了 CSRF 攻击, 就把用户名 ww 改为了 bbbb, 从而实现了 CSRF 攻击
防御措施一: 判断请求头的来源
- // 检查上一页面是否为当前站点下的页面
- if (!empty($_SERVER['HTTP_REFERER'])) {
- if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) != 'html5.yang.com') {
- // 可以设置 http 错误码或者指向一个无害的 url 地址
- //header('HTTP/1.1 404 not found');
- //header('HTTP/1.1 403 forbiden');
- header('Location: http://html5.yang.com/favicon.ico');
- // 这里需要注意一定要 exit(), 否则脚本会接着执行
- exit();
- }
- }
防御措施二: 在页面生成一个随即串并保存在 token 中, 用于在服务器中比对, 参照 laravel 中的 CSRF 防御机制
4,Session 劫持攻击 (Session Hijacking)
攻击者利用各种手段来获取目标用户的 session id. 一旦获取到 session id, 那么攻击者可以利用目标用户的身份来登录网站, 获取目标用户的操作权限.
防御方法:
, 更改 Session 名称. PHP 中 Session 的默认名称是 PHPSESSID, 此变量会保存在 Cookie 中, 如果攻击者不分析站点, 就不能猜到 Session 名称, 阻挡部分攻击.
, 关闭透明化 Session ID. 透明化 Session ID 指当浏览器中的 Http 请求没有使用 Cookie 来存放 Session ID 时, Session ID 则使用 URL 来传递.
, 设置 HttpOnly. 通过设置 Cookie 的 HttpOnly 为 true, 可以防止客户端脚本访问这个 Cookie, 从而有效的防止 XSS 攻击.
, 关闭所有 phpinfo 类 dump request 信息的页面.
, 验证 HTTP 头部信息
, 每当用户登陆的时候就进行重置 sessionID
,sessionID 闲置过久时, 进行重置 sessionID
5, 文件上传漏洞攻击 (File Upload Attack)
攻击者利用程序缺陷绕过系统对文件的验证与处理策略将恶意代码上传到服务器并获得执行服务器端命令的能力.
常用的攻击手段有:
上传 Web 脚本代码, Web 容器解释执行上传的恶意脚本;
上传 Flash 跨域策略文件 crossdomain.xml, 修改访问权限 (其他策略文件利用方式类似);
上传病毒, 木马文件, 诱骗用户和管理员下载执行;
上传包含脚本的图片, 某些浏览器的低级版本会执行该脚本, 用于钓鱼和欺诈.
总的来说, 利用的上传文件要么具备可执行能力 (恶意代码), 要么具备影响服务器行为的能力 (配置文件).
防范措施:
文件上传的目录设置为不可执行;
判断文件类型, 设置白名单. 对于图片的处理, 可以使用压缩函数或者 resize 函数, 在处理图片的同时破坏图片中可能包含的 HTML 代码;
使用随机数改写文件名和文件路径: 一个是上传后无法访问; 再来就是像 shell,.php ,.rar 和 crossdomain.xml 这种文件, 都将因为重命名而无法攻击;
单独设置文件服务器的域名: 由于浏览器同源策略的关系, 一系列客户端攻击将失效, 比如上传 crossdomain.xml, 上传包含 Javascript 的 XSS 利用等问题将得到解决.
来源: https://www.cnblogs.com/chenhaoyu/p/8870782.html