数据URI和潜在危险的Request.Path值

时间:2013-04-16 16:50:35

标签: asp.net-mvc-3 security data-uri

我尝试过使用这个CSS属性的数据URI:

background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYGBg8AUIMAAAUgBOUWVeTwAAAABJRU5ErkJggg==");

在本地它运作正常。 但是,当我调试时,chrome中缺少文件。如果我尝试导航到它,我得到:从客户端检测到一个潜在危险的Request.Path值(:)。

很明显,我的应用程序认为此图像的URI是可疑的。

如何展示它? 我尝试使用以下方法放松验证:

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

理想情况下,我不想过多地放宽规则,只能加载这些数据URI图像。

1 个答案:

答案 0 :(得分:1)

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

由于近来XSS的风险很高,我会毫不犹豫地禁用支票。如果可以,只需使用非编码URI。如果你做不到,你应该问问自己为什么。如果您试图通过混淆URI来增强安全性,请确保攻击者解密这一点非常简单。 任何形式的加密,只是表示数据的不同方式。