对web 安全的一些笔记~
XSS
本质上是一种注入攻击,简单的说就是利用各种手段把恶意代码添加到网页中,并让受害者执行这段脚本。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。主要有以下2种:
- 反射型XSS(过表单GET提交等方式出现在URL中,这些恶意脚本作为输入提交到服务器端,最后返回给浏览器执行。之所以叫做反射型是因为这种攻击方式只生效在本次提交、渲染,下次攻击需要再次提交脚本代码)
- 存储型XSS(提交的脚本代码会被存储在服务器端数据库、文件系统等地方,每次页面被访问都会被调用、执行)
DOM型XSS(不需要服务器端参与,只需要客户端进行DOM解析)
防范:永远不相信用户的输入。
- 何时候都不要把不受信任的数据直接插入到dom中的任何位置,一定要做转义。
- 使用JSON.parse 而不是eval,request 的content-type要指定是Content-Type: application/json;
- CSP(Content Security Policy)
- X-Frame-Options
- Http-Only
CSRF
可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作
利用的是网站服务器端所有参数都是可预先构造的原理,然后黑客拼接好具体URL,
以任何方式去调用你的被攻击网站的接口。防范:
- 验证 HTTP Referer(记录了该 HTTP 请求的来源地址)
因为在通常情况下,访问一个安全受限页面的请求来自于同一个网站。 - 在请求中放入黑客所不能伪造的信息 more
- 验证 HTTP Referer(记录了该 HTTP 请求的来源地址)
DNS劫持
- http劫持 more