2013-04-16 26 views
3

我一直在使用数据URI这个CSS属性的尝试:数据URI和有潜在危险的Request的值

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

并在本地正常工作。 但是,当我正在调试时,该文件在chrome中出现丢失。如果我尝试导航到它,我会得到:从客户端(:)中检测到潜在危险的Request.Path值。

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

如何让它显示? 我试图用轻松的验证:

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

理想的情况下,我不会想放松的规则太多,只够得到这些数据URI图像加载。

回答

1

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

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

+0

为什么人们推荐他们,如果他们不工作? – Nick

+0

我认为人们会推荐他们,因为他们不了解真正的安全和“通过默默无闻的安全”之间的区别。这是一个诚实的无知。我希望CS程序开始要求CS专业的安全课程。一些程序已经开始增加安全性,但只是作为选择。这是我的两分钱无论如何:-) –

+0

@Freedom_Ben我不相信在这种情况下的数据uri被用来混淆一个URL。看起来他正在讨论使用Data URI从base 64编码内容加载PNG图像。 –