XSS定义:指恶意攻击者向Web 页面里面插入的恶意脚本代码,当用户浏览该页时,潜入 Web 里面的脚本代码会被执行,从而达到恶意用户的特殊目的。
由于没有对输入的请求进行验证就进行了输出,从而会执行客户端的脚本代码。
如何防范:XSS 攻击主要是因为不检查数据造成的,一般情况下,对请求的数据进行转换和过滤就可以有效防范 XSS 攻击。
数据的转换是可以在接受数据时,进入数据库时及输出数据时进行,因此,对于开发者,应该首先把经历放在对所有用户提交内容进行可靠的输入验证上,这些提交内容包括对 URL、查询关键字、HTTP 报头、POST 数据等。只接受在所规定长度范围内、采用适当格式及所希望的字符,过滤或者忽略其他内容。
如果 Web 应用程序必须支持用户提交 HTML 格式内容,那么应用的安全性将大大降低,因此除非必须这么做,否则一定不要提供此内容。
但也有一些措施来保护 Web 应用程序,首先就是确认所接收的 HTML 被妥善的格式化,仅包含最小化的、安全的标签(绝对没有 script元素),并且去掉任何对远程内容的引用(尤其是样式表和 JavaScript)。
仅仅在客户端过滤是不够的,还要在服务器端进行过滤。
一些应用程序服务器提供了实用功能,可以执行请求验证,这是一个请求过滤的方式。
应该仔细地评估应用程序中所有形式的输入,并确保对它们进行了正确的验证和编码,或者确保应用程序在处理数据或将信息发送回客户端之前已推出。除此之外,别无他法。