什么是XSS脚本攻击
XSS全名:Cross-Site-Scripting, 理论上缩小应该为 CSS 但为了和 CSS(层叠样式表)进行区分,改了个名字叫XSS.
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容
xss脚本攻击原理
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(与之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如
xss脚本攻击特点
与钓鱼攻击相比,XSS攻击所带来的危害更大,通常具有如下特点:
①由于XSS攻击在用户当前使用的应用程序中执行,用户将会看到与其有关的个性化信息,如账户信息或“欢迎回来”消息,克隆的Web站点不会显示个性化信息。
②通常,在钓鱼攻击中使用的克隆Web站点一经发现,就会立即被关闭。
③许多浏览器与安全防护软件产品都内置钓鱼攻
若我们在评论里输入了一段可执行的javascr,让他弹出 OK,当把评论提交后,如果没有网站没有做字符的过滤处理的话,那么我们提交的脚本就会加载到页面里,但是别忘了他是一个JS的alert方法,然后大家一打开评论页面就会弹出 OK.
可能的几种XSS注入方式
- alert(String.fromCharCode(88,83m83)) 通过获取字母的ASCII码来规避网站的过滤。
- 通过img标签来达到攻击的目的,
- 通过样式表注入
- 通过style方式注入
XSS脚本攻击防御方式:
- 不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
- 实现Session 标记(session tokens)、验证码系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
- cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
- 确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。