key*_*rdP 12 c# asp.net security image image-uploading
我正在开发一个ASP.NET Web应用程序,并希望用户能够从本地系统上传图像,或者将URL传递给图像.图像可以是JPG或PNG.这样做我应该关注哪些安全问题?我已经看到了在JPG文件中嵌入代码的各种方法.C#(或外部库)中是否有任何方法可以确认文件是JPG/PNG,否则会抛出错误?至少,我正在制作保存上传图像不可浏览的目录,并将最大大小限制为1mb,但我想实施进一步的检查.
谢谢你的建议.
bob*_*nce 12
C#(或外部库)中是否有任何方法可以确认文件是JPG/PNG,否则会抛出错误?
也许吧,但这本身并没有多大帮助.您可以轻松制作既是有效图像格式又包含IE内容的活动HTML /脚本内容的文件 - 嗅探绊倒.或者需要担心破坏的Java和Flash原始策略,这可能与脚本进入服务器的安全上下文具有相同的效果.
如果您处理图像(例如,裁剪,调整大小)并重新保存,则会非常非常难以进行内容走私攻击.但是,您应始终确保服务器端工具是最新的,因为图像处理库中的漏洞可能会使您面临服务器端漏洞利用.
如果你不能这样做,最好的办法是减轻所有内容注入问题,以便从不能访问任何敏感凭据的不同[sub]域提供图像(cookies,基本身份验证)主要网站.
如果为此目的使用子域,例如images.example.com,您的主站点只能通过www.example.com而不是 可访问example.com.否则,注入的内容images.example.com可以访问example.comIE中的cookie .example.com应该301重定向以www.example.com防止不必要的cookie泄漏.
将标头添加X-Content-Type-Options: nosniff到响应中以阻止来自IE8的内容走私攻击.(对早期版本没有帮助,唉.)
也:
清理用户指定的文件名很难,特别是如果您的应用程序可能在Windows服务器上运行,其中有关可用文件名的规则确实很复杂.一个好的起点是只允许使用字母数字,并添加自己的文件扩展名和前缀.(必须使用前缀来避免Windows保留的文件名和空文件名.)
更好:将用户提供的文件名存储在数据库中,而不是将其用作真实文件名.
有关文件上载安全性问题的更多讨论,请参阅此问题.
这是绝对的雷区。需要考虑的事情(不一定是详尽的清单,没有保证等)。
| 归档时间: |
|
| 查看次数: |
5421 次 |
| 最近记录: |