Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XSS和htmlentities_Javascript_Xss_Html Entities - Fatal编程技术网

Javascript XSS和htmlentities

Javascript XSS和htmlentities,javascript,xss,html-entities,Javascript,Xss,Html Entities,htmlentities是一道很好的防线,但在javascript上下文中没有帮助 编写自己的htmlencode函数来进一步执行不是很好吗;和=也要编码的字符 这样,一个功能将使您在所有方面都安全。我想听听这种方法是否存在问题 我假设如果不使用以下4个字符中的一个,您就不可能修改会对您造成伤害的javascript 编写自己的htmlencode函数来进一步执行不是很好吗;和=也要编码的字符 不是。JavaScript是JavaScript,HTML是HTML 将数据安全地放入JavaScri

htmlentities是一道很好的防线,但在javascript上下文中没有帮助

编写自己的htmlencode函数来进一步执行不是很好吗;和=也要编码的字符

这样,一个功能将使您在所有方面都安全。我想听听这种方法是否存在问题

我假设如果不使用以下4个字符中的一个,您就不可能修改会对您造成伤害的javascript

编写自己的htmlencode函数来进一步执行不是很好吗;和=也要编码的字符

不是。JavaScript是JavaScript,HTML是HTML

将数据安全地放入JavaScript所需的转义序列将导致HTML中出现无关字符

字符引用需要使数据安全地放入HTML,否则会破坏JavaScript或导致JavaScript输出中出现不正确的字符

使用这两个函数唯一有意义的时候是将原始数据插入JavaScript,然后将该JavaScript插入HTML,或者将所述数据插入HTML,然后插入JS。然后,这两个函数需要按照正确的顺序在数据上运行

我假设如果不使用以下4个字符中的一个,您就不可能修改会对您造成伤害的javascript

危险假设

$text = "( = \" ' & \\  </textarea> : ; . " ;

echo htmlentities($text);   

//outputs as -->>     ( = &quot; ' &amp; \  &lt;/textarea&gt; : ; . 

//obviously, htmlentities does nothing to ( ) = ; and .

您需要根据上下文使用不同的编码。没有一个通用的编码器可以同时处理所有的事情。危险的不是人物,而是他们被解读的背景


JavaScript中的值需要json_encode$value其他函数(如addslashes)不能处理所有边缘情况。json_encode转义您是否将用户生成的内容放入标记中?这太糟糕了…要在JavaScript中转义数据,请使用json_编码。htmlentities是不正确的,addslashes也是。我看到我原来的问题偏离了轨道。我计划只在html上下文中使用该函数,而html上下文不仅指html中的可见内容区域,还指标记内容;示例:。在这里,需要正确转义用户生成的内容。通过照顾以下4个角色:;并且=,我想我可以安全地对抗XSS。我可以在那里获得一些针对XSS的保护,比如javascript:alertdocument.cookies。加入,这将在那里消失。{background url:javascript:alert1;}或{text size:expressionalert'XSS';}。如果我添加上面提到的4个字符,javascript尝试就会失败。至于你的[1,2,3]例子,我不确定你的观点是什么。如果没有这4个字符,尤其是在html标记中,你会造成什么伤害呢!如果您将数据放在像onclick这样的javascript事件处理程序中,您仍然会允许XSS:@John Smith-如果您接受来自用户的URI,那么您需要确保它是真实的URI,并且它使用了批准的方案,例如HTTP URI。如果不中断包含该字符的http:URI,则无法更改URI中的字符,使其无法在javascript:URI中工作。@John Smith-我的观点是,如果执行javascript,则可以中断整个页面的对象创建,而不使用,=或;。
foo = [1,2,3];
Return value: [1, 2, 3]

Object--
Return value: NaN

foo = [1,2,3]
Error report: Uncaught TypeError: Object NaN has no method 'getOwnPropertyNames'