XSS攻击是什么
通常指黑客通过“HTML注入”篡改网页、插入恶意脚本,从而在用户浏览页面是控制用户浏览器的一种攻击。
XSS攻击类型
反射型XSS:需要用户“点击”一个恶意链接,把用户输入的数据“反射”给浏览器,才能攻击成功。也叫做“非持久型XSS”(Non-persistent
XSS) 存储型XSS:会把用户输入的数据”存储“在服务器端,有很强的稳定性,也叫做”持久型XSS“(Persistent XSS)
DOM Based XSS:从效果上来说也是反射型XSS,因为形成的原因比较特别,且出于历史原因提出并单独作为
一个分类。通过修改页面的DOM节点行程的XSS,称之为DOM Based XSS.XSS的防御
因为通过窃取用户Cookie,可以在不使用登录密码的情况下,登陆进用户的账户,所以可以采取HttpOnly解决XSS后的Cookie劫持攻击
使用HttpOnly示例:
<?php
header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly",false);
?>
<script>`
alert(document.cookie);
</script>
输入检查,检查输入的格式等。输入检查的逻辑,必须放在服务器代码中实现,如果只是在客户端使用JavaScript进行输入检查,很容易被攻击者绕过。客户端的javascript的输入检查,可以阻挡大部分误操作的正常用户,从而节约服务器资源。
输出检查除了富文本(网站需要允许用户提交一些自定义的HTML代码,称之为”富文本“)的输出外,在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。
安全编码函数
在标签的选择上使用白名单,避免使用黑名单