答:跨站脚本攻击(XSS)包括一个收集用户输入信息,并且不经过任何过滤逐字向用户显示的网站(例如一个银行或者电子商务网站)。攻击者可以创建Web内容来访问这样的网站,提供包括浏览器脚本的用户输入信息,然后欺骗用户浏览带有这些内容的网站。例如,攻击者可以向受害者发送带有合法URL的电子邮件,这个URL会指向这个网站并作为输入信息提供浏览器脚本。攻击者也可以在新闻组或者第三方网站中加入一个链接或者在允许第三方上传内容的网站增加内容,送例如社会网络网站、Web邮件提供者、博客网站等等。当一个受害的用户来到这个网站,那些恶意内容,包括脚本,就回到了浏览器并在那里运行。浏览器不知道这个脚本是恶意的,就运行了这个程序,而且不注意地就允许了攻击者的脚本访问这个网站的所有功能。它可以窃取cookie并把它们发送给攻击,或者受害用户参与到传送中。所以,不过滤用户输入信息来移除和浏览器脚本相关的潜在危险字符的电子商务网站很容易受到跨站脚本攻击。
那么Web网站应该如何防御跨站脚本攻击呢?Web开发人员可以向所有用户的输入信息执行过滤代码,移除可能有害的代码,或者内把他们转成浏览器不能运行的信息(例如,>和<可以相应的转为>和<)。CodeIgniter包括免费的PHp过滤代码,防御跨站脚本攻击和其他类型的攻击。
Web用户可以通过使这些脚本在浏览器中失去作用,防御这些攻击,但是这会使很多网站的功能不能使用,或者受到严重的限制。用户还可以在他们的浏览器中配置受信任的区域,允许他们知道不太可能存在跨站脚本漏洞的网站的脚本。但是,执行这样的方案很难。还有避免电机电子邮件、新闻组河第三方网站中的链接。与之相反的,只通过在浏览器中直接输入他们的URL或者通过快捷方式直接登录这些网站。虽然这是很好的防御原则,即使这些方法很繁琐。最后,用户只依靠那些他们相信会过滤用户输入信息的网站。

