前端攻击
XSS攻击(cross-site script)
1. 定义:跨站脚本攻击(xss攻击)是Web应用程序中发现的计算机安全漏洞,XSS使攻击者能够将客户端脚本注入到其他用户查看的网页中。
1)反射性xss:(非持久化的)出现在url中作为参数提交到服务器,服务器解析并响应,响应结果中包含xss代码,最后浏览器解析执行。
http://test.com?name=<script>alert(document.cookie)</script> // 在url恶意弹框 <img src='' onerror=alert(document.cookie)> // 利用onerror属性恶意弹框
2) 存储性xss:(持久化)攻击者输入恶意的脚本数据存入数据库,当其他用户读取时,用户浏览器将解析执行这段脚本。
// 利用留言板,提交以下代码,执行恶意代码
<script>alert(“1”)</script>
3)DOM型:修改原始的客户端代码,受害者浏览器DOM环境法比安,导致有效载荷的执行。(页面本身没变化,但是DOM环境被恶意修改,有客户端代码包含进了页面,并且意外执行)
function test() { var str = document.getElementById('text').value document.getElementById('result').innerHTML = `<a href=${str}>link</a>` }
3. 攻击防御:
1)前端可对用户输入信息进行过滤,如正则替换标签的方式进行转码节码,如<、>、空格等替换html编码
s = str.replace(/&/g,"&"); s = s.replace(/</g,"<"); s = s.replace(/>/g,">"); s = s.replace(/ /g," "); s = s.replace(/\'/g,"'"); s = s.replace(/\"/g,""");
2)保护cookie,对于重要的cookie设置httpOnly,防止客户端痛殴document.cookie获取cookie.
3)过滤敏感标签(script, iframe, form),以及敏感词(javascript:)和js事件(onclick, onerror, onfocus)
CSRF攻击(cross site request forgery)
1. 定义:跨站请求伪造(CSRF攻击)是通过伪装成站点用户进行攻击。
2. 形式:攻击者盗用用户的身份信息,并以用户的名义进行发送恶意的请求等,如发邮箱,盗用账号等非法手段
如:登陆网站后,并在本地种下cookie,如果没退出网站且访问了恶意网站,携带cookie访问到的,你的信息将会被盗用。
3. 攻击防御:
1)验证HTTP Referer字段
在HTTP头中Referer字段,记录该HTTP请求的来源地址,如果跳转的万盏与来源地址相符,那么就是合法的,否则可能是csrf攻击,拒绝该请求。
2)在请求地址中添加token并验证
请求的时候加个token值,token存入数据库后,后台返回给客户端,如果客户端再次登陆的时候,后台发现token没有或者在数据库中查询不会再呢过去,那么就拒绝请求。
如果防止一个账号在多个机器上登录,我们可通过token来判断,如果A机器登录后,我们就将用户的token清楚,重新生成,那么另外一台B及其在操作的时候,token就失效了,只能重新登录,这样就防止两台机器同一账号。
3)在HTTP头中自定义属性并验证
如果每次请求都加token,那么各个接口都得加增加了不便。那么我们可通过http请求头来设置token,在ajax的headers中
网络劫持攻击
1. 定义: 网络劫持攻击主要通过一些代理服务器,或者wifi等中间件的网络请求进行劫持。
2. 攻击防御:采用https进行加密