学习web前端安全及防范,就是为了保护站点安全,站点安全就是保护站点不受未授权的访问、使用、修改和破坏而采取的行为或实践,XSS(Cross-sitescripting)跨站脚本攻击是一种常见的安全漏洞,接下来我们探究一下它的攻击方式及预防策略
跨站脚本(XSS)
攻击者通过网站将客户端脚本代码注入到其他用户的浏览器中的攻击手段,该代码将该用户用于站点认证的cookie发送给攻击者,然后他就有权限做任何该用户可以操作的事,比如访问信用卡信息、查看获取联系人、更改用户密码
xss的两种主要攻击方式:
反射型XSS攻击:传递给服务器的用户数据被立即返回并在浏览器中原样显示的时候,一般通过修改URL参数,用户访问链接时执行攻击;不过,类似Chrome的浏览器会自动预防这种攻击存储型XSS攻击:恶意脚本存储在站点中,然后再原样地返回给其他用户,在用户不知情的情况下执行。比如未经修改的HTML格式评论包含恶意脚本,会在评论显示的时候执行基于DOM的XSS:受害者浏览器的DOM环境改变,导致有效载荷的执行预防方法:删除或禁用可能包含可运行指令的标记,比如scriptobjectembed和link的标签,修改用户数据使其无法用于运行(输入过滤),很多Web框架会帮我们过滤HTML表单的用户数据
实际操作:
方式一:转义字符
代码类似:functionescapeHtml(html){
returnhtml.replace(//g,lt;).replace(//g,gt;);
}
也可以使用js-xss,为不需要转义的字符设置白名单
方式二:CSP(Content-Security-Policy)
HTTP响应头Content-Security-Policy控制用户代理能够为指定的页面加载哪些资源
使用方法一:设置meta标签:
meta