如何使用转义来防止XSS攻击?

use*_*527 3 xss symfony1 escaping

为防止XSS攻击,已启用输出转义;

以上是来自symfony,但我不明白.

zom*_*bat 7

XSS是"跨站点脚本"的缩写.当您设法将脚本(通常是javascript)潜入其他人的网站时,会发生跨站点脚本攻击,在该网站上可以恶意运行.

当用户输入网站时,可以使用XSS.例如,如果我填写了一个网页表格,并且它要求我提供我的姓名,我可以进入My name is <script src="http://bad.domain/evilscript.js"></script>.如果我提交表单,然后在下一页上它要求我确认我的详细信息并重新输出我输入的内容,我输入的令人讨厌的HTML标记将被呈现,脚本将被浏览器下载并运行.

为了防止这种情况,您需要转义用户输入.转义意味着您转换(或标记)数据的关键字符,以防止在危险的上下文中解释它.在HTML输出的情况下,您需要转换<>字符(以及其他),以防止任何恶意的HTML呈现.转义这些字符包括把他们变成自己的实体等价物&lt;&gt;(见PHP的用htmlspecialchars()函数),这将不会被浏览器解释为HTML标签.

Symfony试图告诉您的是,它有能力自动为您的输出执行此操作,并且该功能已启用.

  • 还请注意转义取决于上下文.请参阅http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet,尤其是XSS预防规则 (3认同)

Ry4*_*ase 2

XSS(跨站脚本)是指其他人获取您的服务器提供的 javascript。例如,如果您可以从 google.com 获得随机的 javascript 来提供服务,那么您可以让该 javascript 向您发送 google 所知道的有关其服务对象的所有信息。

避免这些可能来自用户(而不是来自服务器/内容作者)的数据具有尖括号和其他类似 HTML 的内容,以便最终用户不会执行它。