Javascript URL中的HTML和CSS导致404错误(用户代理=Trident/4.0)

Javascript URL中的HTML和CSS导致404错误(用户代理=Trident/4.0),javascript,cookies,internet-explorer-8,http-status-code-404,user-agent,Javascript,Cookies,Internet Explorer 8,Http Status Code 404,User Agent,我在URL中得到了一些404代码片段(CSS、HTML和JavaScript) 尽我所能告诉用户,在他们的会话期间,网站进展得很好-这是一个电子商务网站,受影响的用户正在把东西放进他们的篮子里,然后签出OK等等 在某些页面上,我看到404个错误与看似成功的页面显示相邻。每次显示该页面时(在该会话中),我都会收到相同的404错误 记录的404错误示例: 404;http://www.example.com/rrepeat: repeat-y; 有问题的页面上只有一个匹配实例(第一个“r”除外):

我在URL中得到了一些404代码片段(CSS、HTML和JavaScript)

尽我所能告诉用户,在他们的会话期间,网站进展得很好-这是一个电子商务网站,受影响的用户正在把东西放进他们的篮子里,然后签出OK等等

在某些页面上,我看到404个错误与看似成功的页面显示相邻。每次显示该页面时(在该会话中),我都会收到相同的404错误

记录的404错误示例:

404;http://www.example.com/rrepeat: repeat-y;
有问题的页面上只有一个匹配实例(第一个“r”除外):


我已经检查了包含的CSS文件,但没有一个匹配(如果有,我可能会在包含CSS文件的所有页面上得到404)

我的想法是,它可能是IE8的一个插件,在用户查看页面时对页面进行爬网以缓存某些内容,或者可能是出于更恶意的目的。页面和404(在该会话中)的用户代理是相同的[不知道插件是否会与浏览器本身显示不同?]

其他例子:

/r/table></form></td><td width= 
/r width=

/r alt= 

/rurn pair[1]; --&gt;</SPAN> --&gt;</SPAN>--&gt;</SPAN>function Set_Cookie( name, value, expires, path, domain, secure ) <SPAN style="color:red;font-weight:bold;background-color:yellow;">&lt;!--/ set time, it's in millisecondsvar today = new Date();today.setTime( today.getTime() );/*if the expires variable is set, make the correct expires time, the current script below will set it for x number of days, to make it for hours, delete * 24, for minutes, delete * 60 * 24if ( expires )<SPAN style="color:red;font-weight:bold;background-color:yellow;">&lt;!--expires = expires * 1000 * 60 * 60 * 24;--&gt;</SPAN>*/expires = (3650) * 1000 * 60 * 60 * 24;var expires_date = new Date( today.getTime() + (expires) );document.cookie = name +
/r/table/form/tdtd宽度=
/r宽度=
/r alt=
/rurn对[1];------函数集\u Cookie(名称、值、过期、路径、域、安全)!--/设置时间,以毫秒为单位svar today=新日期();today.setTime(today.getTime())/*如果设置了expires变量,请设置正确的expires时间,下面的当前脚本会将其设置为x天,要设置为小时,请删除*24,如果(expires)设置为分钟,请删除*60*24--expires=expires*1000*60*60*24--*/过期=(3650)*1000*60*60*24;var expires_date=新日期(today.getTime()+(expires));document.cookie=名称+
所有这些似乎都以一个不属于代码的“r”开头,然后是直接从页面代码中提取的一个片段

这个页面通过了w3c.org的HTML验证(所以我不认为它是一个未加密的引用,除非我有一些愚蠢的javascript破坏了HTML!!)

用户代理始终是MSIE 8.0或MSIE 7.0和Trident/4.0。(我假设带有三叉戟的MSIE 7.0是兼容模式下的IE8)

我每天只看到几个这样的例子(少于10个会话),而我每天使用用户代理(包括IE8和Trident)会有数百个会话


谢谢。

在我看来,您正在处理的不是变形的蜘蛛,就是一次未遂的攻击

如果是小规模的攻击,最好的做法是确保您已锁定应用程序/站点,以便此类攻击仍然不成功

注意你的日志。如果像这样的东西出现频率和/或改变其攻击向量,你最好知道这些努力的方向,并做出相应的反应


最后,“IE8/Trident”客户端标识符没有什么特别之处。它只是说客户端说他们正在使用Trident布局引擎运行Internet Explorer 8(类似于Safari/WebKit或Mozilla/Gecko)。

我也遇到了同样的问题。在Trident 4.0浏览器上,应用程序会突然开始引用奇怪的js脚本,即

/js/jqu/%3C![CDATA[var%20Paginator_otherActivities%20=%20new%20Paginator();Paginator_otherActivities.setUrl(

不过,这不会影响用户体验,因为该网站仍然显示良好。我成功跟踪了该问题,并在本地服务器上重新运行它,但发生了相同的错误,这使我认为这不是XSS攻击

我运行了一些测试,结果发现问题在于应用程序试图包含太多的js文件——当我减少这个数字时,问题就停止了


我找不到任何关于Trident layout engine引入的限制的信息,但我记得IE过去对每个页面上可以使用多少css类都有限制,所以这可能与Microsoft试图智胜所有人有关。

(Trident/4.0是IE8的标识,即使用户代理说IE7——这是在兼容模式下运行的IE8。)IE 8的Lookahead Downloader有一个怪癖,它会影响跨越任何4096字节的url。生成的url是截断前的字符串和截断后的字符串的串联。它似乎将任何单引号或双引号视为分隔符。如果使用XHTML,则没有实际的方法来avo我从IE 8用户那里得到了这些404错误。

谢谢你的回答。我不认为这是蜘蛛/XSS攻击-除非它感染了用户的浏览器。我每天有10个用户用信用卡购买东西,并且在他们的会话中(即404错误有相同的会话cookie等)我也看到了这些愚蠢的404错误。所以他们肯定是真正的用户。我提到了IE8/Trident,因为所有这种类型的404都有用户代理,所以看起来与浏览器相关。如果您使用任何复杂的javascript交互(AJAX、Flash表单等)?它可能会导致客户端运行的任何脚本在IE8中出现故障,并用应用程序中其他地方的HTML污染post/get变量。我们有Javascript,但它非常轻量级。没有AJAX,没有Flash表单。我将查看同一会话中报告无错误的页面,看看是否可以发现不同的页面本身正在加载,因此我不认为存在发布/获取问题(仅查看主页就创建了404-在用户有机会发布任何内容之前),我看到的是一个额外的文件请求。因此,我认为任何损坏都必须存在于IMG标记或类似的东西中。我还将查看所有HTML/CSS/IMG文件的日志,并查看404发生的顺序。如果您从一次访问中收到重复的请求,则可能是应用程序路由和/或任何.htac的问题您设置的cess或mod_重写规则
/r/table&gt;&lt;/form&gt;&lt;/td&gt;&lt;td width= 
/r width=

/r alt= 

/rurn pair[1]; --&gt;</SPAN> --&gt;</SPAN>--&gt;</SPAN>function Set_Cookie( name, value, expires, path, domain, secure ) <SPAN style="color:red;font-weight:bold;background-color:yellow;">&lt;!--/ set time, it's in millisecondsvar today = new Date();today.setTime( today.getTime() );/*if the expires variable is set, make the correct expires time, the current script below will set it for x number of days, to make it for hours, delete * 24, for minutes, delete * 60 * 24if ( expires )<SPAN style="color:red;font-weight:bold;background-color:yellow;">&lt;!--expires = expires * 1000 * 60 * 60 * 24;--&gt;</SPAN>*/expires = (3650) * 1000 * 60 * 60 * 24;var expires_date = new Date( today.getTime() + (expires) );document.cookie = name +