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

时间:2010-01-29 03:33:03

标签: symfony1 xss escaping

  

防止XSS攻击,输出   逃避已启用;

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

2 个答案:

答案 0 :(得分:7)

XSS是“跨站脚本”的缩写。当你设法将脚本(通常是javascript)偷偷带到别人的网站上时,会发生跨站点脚本攻击,在那里它可以恶意运行。

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

为了防止这种情况,您需要转义用户输入。转义意味着您转换(或标记)数据的关键字符,以防止在危险的上下文中解释它。对于HTML输出,您需要转换<>字符(以及其他字符),以防止任何恶意的HTML呈现。转义这些字符涉及将它们转换为实体等效项&lt;&gt;(请参阅PHP的htmlspecialchars()函数),浏览器不会将其解释为HTML标记。

Symfony试图告诉你的是它能够自动为你的输出做这件事,并且启用了这个功能。

答案 1 :(得分:1)

XSS或Cross Site Scripting是其他人获取服务器提供的javascript的时候。例如,如果您可以从google.com获取随机javascript,那么您可以让javascript向您发送谷歌知道该服务对象的所有内容。

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