web安全性浅析

导读:

分类:技术干货

题目:web安全性浅析

示例+原因+防御

XSS跨站脚本攻击

在新浪博客写一篇文章,同时偷偷插入一段 script

攻击代码中,获取cookie,发送给自己的服务器

发布博客,有人查看博客内容

会把查看者的cookie发送到攻击者的服务器

攻击原理:

能注入恶意的HTML/JavaScript代码到用户浏览的网页上,从而达到Cookie资料窃取、会话劫持、钓鱼欺骗等攻击。

Web浏览器本身的设计不安全。浏览器能解析和执行JS等代码,但是不会判断该数据和程序代码是否恶意。

防御措施:

让注入的js不可执行。

1.输入检查 XSS Filter 对输入内容做格式检查,类似“白名单”,可以让一些基于特殊字符的攻击失效。在客户端JS和服务器端代码中实现相同的输入检查(服务器端必须有)。

2.输出检查 在变量输出到html页面时,可以使用编码或转义的方式来防御XSS攻击 HtmlEncode:将字符转成HTMLEntities,对应的标准是ISO-8859-1。

& --> &

< --> &lt;

> -->&gt;

" --> &quot;

' --> &#x27;

/ --> &#x2F;

JS中可以使用JavascriptEncode。需要对“\”对特殊字符转义,输出的变量的必须在引号内部。

3.请求头设置 . set-cookie 设置 httpOnly 属性可以禁止JavaScript读取cookie

# CSRF 跨站请求攻击

攻击原理:

1.在网站A中登录过,存在漏洞(只用cookie验证)

2.在网站B引诱点击

传统使用cookie中存储sessionid,但是在任何一个站点都可以获取到你的sessionid并发起携带他的请求,这就是CSRF的原理。

防御措施:

1.token验证

token存储在用户session中,每个用户不同。

不将token存储在cookie中而是放在表单隐藏域中或者localstorage中,每次请求用代码添加,就能防止钓鱼。

2.Referer验证(判断站点的来源,比如不是订单页面不让提交订单)

在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址

3.隐藏令牌 (和token类似,比较隐蔽,比如放在请求头中)

原文发布于微信公众号 - code秘密花园(code_mmhy)

原文发表时间:2018-12-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券