逃避用户生成的内容 - 这是什么意思?

时间:2012-12-04 10:29:06

标签: javascript html xss

我开始使用Google的Share按钮。我实际上正在使用“共享”链接,并且在文档中的某个时刻它说明了这一点:

  

注意:将{URL}替换为您要共享的网页的网址。您   必须正确转义可能在其中发生的任何用户生成的内容   {URL}

这是什么意思,我怎么能逃避这个?

2 个答案:

答案 0 :(得分:2)

逃避某些事情意味着您将可能存在的有害字符转换为对计算机无法翻译的有害字符。

例如:

url = "<script>doSomeNastyStuff();</script>";

是可能有害的内容串。主要是因为你在应用程序的某个地方存储了普通的javascript。

当逃避这一点时,你基本上把它转变为无害的东西。

示例:

url = "\"\x3Cscript\x3EdoSomeNastyStuff();\x3C\x2Fscript\x3E\"";

现在您已将有害脚本转换为普通字符,在打印或存储时,您无需担心有害脚本会被注入代码中。

转义字符的其他示例是

var sayHello = "Hello "world", as you like to call yourself";

现在,这个没有用过的javascript代码会产生错误,因为字符串已经终止,而'world'这个词现在是一个变量,然后一个新的字符串开始。

这是转义为允许引号的相同字符串。

var sayHello = "Hello \"world\", as you like to call yourself";

这完全有效!

Dillen建议的是解决问题的正确方法,但我认为解释逃避方法也是合适的。

答案 1 :(得分:0)

您必须对您的网址进行网址编码,您可以使用任何编程语言执行此操作。 有关详细信息,请参阅:http://www.permadi.com/tutorial/urlEncoding/

<强>的Javascript

var url = encodeURIComponent("http://example.com");

<强> PHP

$url = urlencode("http://example.com");

<强> C#

var url = HttpUtility.UrlEncode("http://example.com");