【发布时间】:2009-12-24 20:59:34
【问题描述】:
我需要为 Web 服务器编写一个小文件服务组件。服务有很多问题 文件。因为“原样”是一个很大的安全漏洞,像这样
www.somesite.com/../../../../etc/passwd
有很多问题,包括“..”解析和许多其他问题,例如在 windows 下有许多“引用某些路径的不寻常方式”。符号链接也存在一些问题......它们可能会让我们远离文档根目录。
有没有关于提供文件和对其执行安全检查的好文章或材料?
谢谢。
P.S.:我主要需要针对 POSIX 系统的解决方案,但我也需要针对 Win32 的解决方案。
附言:
- 对于 POSIX 系统,检查“..”和符号链接是否足够? (据我所知,它不适用于 Windows)
- 据我所知,Windows 为这些目的提供了某种 API,有人可以指出吗?
我为什么需要这个:
CppCMS 有一个用于调试目的的简单内部 Web 服务器(我写过一个),我试图弄清楚让这个服务器对现实世界完全有用有多难(即直接在 80 处收听而不是运行在 Web 服务器和 FastCGI 或 SCGI 连接器后面)。
这是我此时使用的file serving application。它进行非常原始的检查。我主要是想让它安全。
我的回答:
好像还不错……
简而言之:在 UNIX 下使用realpath,在 Windows 下使用GetFullPathName。
最后说明:如果有什么建议更详细的功能,我会接受(尤其是对于路径测试很麻烦的 Win32...)
【问题讨论】:
-
但至少最佳实践应该是 ;)
-
能否请您更具体地了解您的网络服务器 - 这是专有解决方案还是基于某些开源网络服务器。我认为大多数(如果不是全部的话)网络服务器已经有了某种保护措施来抵御此类攻击,因为它们已经存在了很长时间。
-
它是 FOSS 服务器,但不是基于现有代码。
标签: security winapi posix filesystems