跨站脚本攻击(Cross Site Scripting),为了避免和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。前端
XSS攻击的分类主要有“反射型”与“存储型”两种。数据库
“反射型”攻击者经过包装改造URL参数,而后利用前端代码的缺陷或漏洞来攻击,它更偏向于前端层面,而且在实际攻击中攻击者会根据 HTML实体编码、URL编码、uniocde编码等进行编码而后欺骗用户点击访问。后端
而“存储型”攻击者则会经过抓包工具或者是直接调用接口的方式想尽一切办法来向后端数据库注入数据。常见的地方就是留言评论或者是含有表单提交的地方。安全
XSS攻击有两个要点,一个是“输入点”,针对输入点咱们能够对关键的特殊的字符进行编码,而在“输出点”咱们要对本身采用的输出方式以及方法要有必定的安全风险认知。架构
XSS之因此会发生,是由于用户输入的数据变成了代码。所以,咱们须要对用户输入的数据进行HTML转义处理,将其中的“尖括号”、“单引号”、“引号”之类的特殊字符进行转义编码:分布式
HTML字符 | HTML转义后的字符 |
---|---|
< | < |
> | > |
‘ | & |
“ | " |
就目前而言,应对XSS攻击的主要手段仍是编码与过滤两种,编码用于将特殊的符号 "<、>、&、'、""进行转义,而过滤则是阻止特定的标记、属性、事件。
若是你不肯意为了严格的安全而限制产品自己的灵活,那么我更建议采用“编码”的方案。工具
文章《IBM Rational AppScan:跨站点脚本攻击深刻解析》spa
书籍《大型分布式网站架构设计与实践》