Asp.net mvc 3 数据URI和潜在危险的请求。路径值

Asp.net mvc 3 数据URI和潜在危险的请求。路径值,asp.net-mvc-3,security,data-uri,Asp.net Mvc 3,Security,Data Uri,我已尝试使用具有此CSS属性的数据URI: background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYGBg8AUIMAAAUgBOUWVeTwAAAABJRU5ErkJggg=="); 在当地,它运行良好。 但是,当我调试时,chrome中的文件

我已尝试使用具有此CSS属性的数据URI:

background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYGBg8AUIMAAAUgBOUWVeTwAAAABJRU5ErkJggg==");
在当地,它运行良好。 但是,当我调试时,chrome中的文件似乎丢失了。如果我尝试导航到它,我会得到:一个潜在危险的请求。从客户端(:)检测到路径值

显然,我的应用程序认为这个图像的URI是可疑的

我怎样才能让它显示出来? 我尝试使用以下方法放松验证:

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false"></pages>


理想情况下,我不想过分放松规则,只想加载这些数据URI图像。

我敢打赌,应用程序认为请求可疑,因为使用了Base-64编码的URI。在Base-64中对恶意URL进行编码是攻击者的一种常见策略,攻击者可以通过前端过滤器获取URL,该过滤器会剥离和/或转义URL,并隐藏任何读取代码的人的请求。XSS攻击通常通过将其中一个URI存储在数据库中并提供给其他用户来完成


由于如今XSS的高风险,我会犹豫是否禁用该检查。如果可以,只需使用非编码URI即可。如果你不能,你应该问问自己为什么。如果您试图通过混淆URI来增强安全性,请务必知道这对于攻击者来说是非常微不足道的。它不是任何形式的加密,只是一种不同的数据表示方式。

我认为人们推荐它是因为他们不理解真正的安全性和“通过模糊实现的安全性”之间的区别。这是一种诚实的无知。我希望CS课程开始要求CS专业的安全课程。一些课程已经开始增加安全性,但只是作为选修课。这是我的两分钱:-)@Freedom\u Ben我不相信本例中的数据uri被用来混淆URL。看起来他在谈论使用数据URI从Base64编码的内容加载PNG图像。