Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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 如何防范编码URL XSS攻击_Javascript_Php_Html_Security_Xss - Fatal编程技术网

Javascript 如何防范编码URL XSS攻击

Javascript 如何防范编码URL XSS攻击,javascript,php,html,security,xss,Javascript,Php,Html,Security,Xss,我有以下两个问题: 1)如何防范此类XSS攻击? 如果出于某种原因,假设查询参数嵌入到图像加载事件中,则会是这样 <img src=x onload="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&

我有以下两个问题:

1)如何防范此类XSS攻击?

如果出于某种原因,假设查询参数嵌入到图像加载事件中,则会是这样

<img src=x onload="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">

//And browser treats as
<img src=x onload="javascript:alert('XSS')">

//而浏览器则视为
我已经在使用PHP的
htmlspecialchars()
filter\u var()
进行URL清理,但是这种编码的XSS很容易通过这些函数传递

我们如何保护这些编码的XSS或压制任何此类攻击


2)XSS攻击是否需要嵌入HTML页面、Javascript或CSS等中才能触发?或者有一种方法不需要嵌入XSS?

htmlspecialchars
在将用户输入插入HTML文档时是一种很好的防范XSS的方法

它可以阻止用户输入中的任何HTML语法脱离您希望它进入的位置并被视为JavaScript

您的问题与攻击被编码的事实无关。问题是,我们正在将用户输入放在期望的JavaScript(以及
onload
属性)的某个地方,因此它已被视为JavaScript

json\u encode
是这里常用的解决方案(然后是
htmlspecialchars
,因为JavaScript位于HTML属性中)

但是,只有当您接受用户输入并将其放入脚本中用作数据时,这才有效。在这里,您似乎正在接受用户输入,并将整个过程视为一个JavaScript函数


如果您这样做,那么您将容易受到XSS的攻击。您可以通过实施针对CSRF的防御措施来在一定程度上缓解这种情况,但您几乎肯定不应该首先这样做。

请说明否决投票的原因,以便我可以纠正我的问题。我已经尽了最大努力,问这个问题只是因为我想从专家那里获得一些专业知识。谢谢如果这是一个重复的问题,那么请指出这一点,因为我找不到。XSS攻击预防非常简单,也非常困难。这很容易,因为你不需要过滤所有的东西——只要避免直接使用不可信的数据。也很难识别哪些数据是不可信的,以防止它。在您的示例中,有一个脚本标记作为URL。如果您从未获取URL,对其进行解码,并将其插入HTML原始文件,则不会触发攻击。@VLAZ感谢您的回复。上面编码的URL是我的用户输入的,他试图用XSS攻击我的网站。我的规则无法检测到它并绕过它。我想知道我应该做些什么来减轻这种XSS攻击。我想允许我的用户在评论中提供任何链接。由于这是用户在评论页面上的输入,感谢昆汀理解我的担忧。那么,你的意思是说,只要我正确地使用htmlspecialchars,并且没有将用户输入放入javascript的任何事件处理程序中,我就可以了?默认情况下,还有一些地方是不安全的(例如一些接受URL的属性)而且,通过使用JS读取属性值,然后以某种方式处理它,您总是可以使自己容易受到攻击(
eval
是一种明显的情况).好的,那么我唯一的最后一个问题是,如果每个用户输入都通过
htmlspecialchars
传递,并且只放在或标签中,而不放在其他任何地方,比如属性中,或者由一些javascript
eval
函数调用,那么我就完全好了?是吗?我试着做我的家庭作业,你可以看到,但只有这个编码问题困扰着我。没有任何技术攻击可以通过这种方式实现。有可能会插入一条用简单英语编写的消息,这会诱骗用户做一些有害的事情。