我尝试过使用这个CSS属性的数据URI:
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYGBg8AUIMAAAUgBOUWVeTwAAAABJRU5ErkJggg==");
在本地它运作正常。 但是,当我调试时,chrome中缺少文件。如果我尝试导航到它,我得到:从客户端检测到一个潜在危险的Request.Path值(:)。
很明显,我的应用程序认为此图像的URI是可疑的。
如何展示它? 我尝试使用以下方法放松验证:
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false"></pages>
理想情况下,我不想过多地放宽规则,只能加载这些数据URI图像。
答案 0 :(得分:1)
我敢打赌,由于Base-64编码的URI,应用程序认为该请求是可疑的。在Base-64中编码恶意URL是攻击者通过剥离和/或转义URL的前端过滤器获取URL的常见策略,并且模糊了读取代码的任何人的请求。 XSS攻击通常通过将其中一个URI存储在数据库中并提供给其他用户来完成。
由于近来XSS的风险很高,我会毫不犹豫地禁用支票。如果可以,只需使用非编码URI。如果你做不到,你应该问问自己为什么。如果您试图通过混淆URI来增强安全性,请确保攻击者解密这一点非常简单。 不任何形式的加密,只是表示数据的不同方式。