XSS 存在的三个条件
- 网站应用程序必须接受用户的输入信息
- 用户的输入会被网站用来创建动态内容
- 用户的输入验证不充分
- 输入过滤,输出转义:检查用户输入含有攻击信息,尽可能过滤攻击信息;如果不能判断哪些是攻击信息,那么要使得显示的时候不能发送攻击
输入过滤
使用黑名单,从用户的输入中删除 <script>
- 缺点:很难保证完全;限制了用户展示代码
<scr<script>ipt> //若仅过滤一个script,其他不检查
some<<b>script>alert(‘hello‘)<</b>/script //在标签中加标签,防止被过滤
// 伪协议JavaScript <img src=javascript:alert(‘Hello‘)> <table background="javascript:alert(‘Hello’)”>
// 伪协议JavaScript <img src=javascript:alert(‘Hello‘)> <table background="javascript:alert(‘Hello’)”>
// 伪协议JavaScript <img src=javascript:alert(‘Hello‘)> <table background="javascript:alert(‘Hello’)”>
// 编码绕过防御措施 %3cscript%3ealert(document.cookie) %3cscript%3e
输出转义
// www.myzoo.com/users.php $profile = htmlspecialchars($profile); //htmlspecialchars:把特殊字符(如< /)特殊编码,经过特殊编码后script不会被识别成脚本语言,但显示时仍以字符原样显示
XSS 防御: httponly cookie
微软提出,保护cookie策略
? 大多数浏览器都支持 httponly cookie
? 仅在传输 HTTP (或 HTTPS )请求时才使用 httpOnly 会话cookie
? 防止通过 XSS 窃取会话 cookie
原文地址:https://www.cnblogs.com/tianjiazhen/p/12235883.html
时间: 2024-10-08 23:27:07