一、XSS防御 (利用网站漏洞从用户盗取信)
在用户本地执行JS代码,可以获取用户localStorage/sessionStorage(同源iframe均可以共享)等信息,或发送请求、原型链污染攻击、可造成RCE(远程命令执行)等。
XSS详解:这一次,彻底理解XSS攻击 - 掘金
-
进行实体编码
-
使用Http Only 对 cookie 进行限制(使document.cookie无法获取到cookie值)
-
对用户输入的内容进行过滤
-
localStorage不保存敏感信息
-
文件上传下载进行XSS过滤、白名单控制。
编码
编码类型 | 特点 |
---|---|
HTML实体编码 | &#x(注:&#是HTML的转义序列escape sequence,不是编码) |
javascript/unicode编码 | \u |
URL编码 | % |
JSFuck | !+[] |
浏览器解码顺序 HTML -> URL -> JS
编码后的链接可能会很长,但可使用工具对URL进行伪装:短链接,短网址在线生成 - 站长工具
二、CSRF防御 借用了cookie,伪造用户请求(不是伪造身份信息)
CSRF详解: 前端安全系列(二):如何防止CSRF攻击? - 美团技术团队
除了盗取用户隐私数据,还可作为其他攻击的辅助手段(也可造成RCE(远程命令执行))
1.可在请求参数中加入随机token/自定义属性,(只有在内源下才加,外链加入也可能被盗取)
2.验证HTTP Refer字段(网址来源)
3.在HTTP请求头中加入自定属性
4.隐藏域token
5.使用验证码
6.在校验cookie的时候校验IP地址是否变化
other: 外部链接校验
三、认证与会话管理
-
会话劫持
-
https的中间人攻击(MITM)
请求被中间人拦截,伪造了被请求方的公钥,换成中间人的公钥,同时中间人也持有对应的私钥,之后客户端的一切通信,在中间人那里都会被中间人的私钥给解开内容,因为中间人通过替换的中间人公钥以及对应的中间人私钥解开了交互密码。
-
注射式攻击
在双方正常的通讯流中插入恶意数据。
-
-
基于session认证:
-
sessionId 设置强制过期时间(会话保持攻击)。
-
sessionId位置:URL,隐藏域,cookie(相对安全)
-
-
基于token认证:
-
JWT(json web token):后台通过秘钥得出token。
Header: alg-算法,typ-类型
Payload: sub,name,iat
Signature: 签名,secret未知,不可伪造,但可爆破攻击
-
四、同源策略及跨源访问 document.domain
同源[协议-主机-端口]
只有同源的脚本才能读写本源的cookie/session/ajax等操作的权限
1.通过设置 domain打破浏览器对于cookie的同源限制,可以从子网站访问主站cookie
2.通过设置 domain打破浏览器对于DOM的同源限制,可以从子网站访问主站DOM树
3.配置浏览器,属性-目标 :"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir=C:\MyChromeDevUserData
五、点击劫持
通过Iframe及css搭配,使隐藏按钮覆盖于目标按钮上,用户则实际上点击了恶意按钮(结合XSS)
防御:在HTTP头中加入"X-Frame-Options"属性,此属性控制页面是否可被嵌入iframe中
-
[DENY] 不能被嵌入到任何iframe或frame中
-
[ SAMEORIGIN ] 页面只能被本站页面嵌入到iframe/frame中
-
[ALLOW-FROM url] 只能被嵌入到指定域名框架中
六、HTML5新标签的安全特性
SVG中可插入<script>标签来实现XSS攻击,当用户上传该svg图片时,实现存储型XSS攻击,则用户每次访问该图片就会执行XSS代码
七、DDos拒绝攻击
-
协议层拒绝服务攻击:
-
UDP泛洪:攻击者伪造UDP包的一个原IP,然后通过僵尸机发送大量的包,来去超过设备的处理能力
-
ICMP泛洪:(PING指令)泛洪效果与请求数量成1:1正比
-
DNS放大攻击: 请求包不大、响应包大,网络虚假堵塞
-
内存缓存攻击:采取随机化、跨度大的小数据集的访问
-
-
传输层攻击:
-
SYN泛洪: 发送SYN,不响应ACK,使状态变为SYN_RECV,再进一步接收到客户端的ACK就进入ESTABLISHED状态,但永远接受不到这个客户端ACK确认包,从而消耗服务端的网络资源。
-
ACK泛洪:使用非法的ACK数据包看起来与合法的ACK包基本相同的特征,进行DDos攻击,不易被外部安全设备拦截的特征,针对于服务器和防火墙的攻击。
-
-
应用层拒绝服务攻击:
-
Slowloris攻击:在正常HTTP包头中,以两个CLRF(\r\n)表示HTTP Headers部分结束,则去掉一个(\r\n)表示头部未结束,客户端再发送任意头部保持连接,耗尽服务器连接数,造成拒绝服务。这个频率不需要过高。
-
HTTP Post Dos:与Slowloris相似,指定一个比较大的content-length,然后以很低的速度发包,如一分钟一个字节,保持住连接。当多台机器这样连接,耗尽服务器资源,造成拒绝服务。
-
HTTP泛洪(CC攻击):黑客发送正常的(GET POST) 请求,针对于服务器需要消耗大量资源的页面(搜索和计算),如账号登录、搜索等功能,造成服务器资源耗尽,无法响应正常连接。
-
other: 进行输入长度校验
八、安全开发
-
设计和评估(威胁分析、评估之类的)
-
定义和使用加密标准
-
管理使用第三方组件的安全风险
-
使用得到授权的工具
-
静态代码分析(编码标准)
-
动态代码分析(代码运行)
-
渗透测试
-
建立事件响应流程
靶场平台 OWASP.org