Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在提供文件服务的给定路径(从web服务器)上执行安全检查_Security_Winapi_Posix_Filesystems - Fatal编程技术网

Security 如何在提供文件服务的给定路径(从web服务器)上执行安全检查

Security 如何在提供文件服务的给定路径(从web服务器)上执行安全检查,security,winapi,posix,filesystems,Security,Winapi,Posix,Filesystems,我需要为web服务器编写一个小的文件服务组件。有很多问题需要解决 文件夹。因为“原样”是一个很大的安全漏洞,就像这样 www.somesite.com/../../../../etc/passwd 有许多问题,包括“.”解决和许多其他问题,如在windows下有许多“引用某些路径的不寻常方式”。还有一些关于符号链接的问题。。。它们可能会使我们远离文档根 是否有关于提供文件和对其执行安全检查的好文章或材料 谢谢 注:我需要的解决方案主要是POSIX系统,但我也需要Win32的解决方案 p.p.S

我需要为web服务器编写一个小的文件服务组件。有很多问题需要解决 文件夹。因为“原样”是一个很大的安全漏洞,就像这样

www.somesite.com/../../../../etc/passwd
有许多问题,包括“.”解决和许多其他问题,如在windows下有许多“引用某些路径的不寻常方式”。还有一些关于符号链接的问题。。。它们可能会使我们远离文档根

是否有关于提供文件和对其执行安全检查的好文章或材料

谢谢

注:我需要的解决方案主要是POSIX系统,但我也需要Win32的解决方案

p.p.S.:

  • 检查“.”和符号链接是否足以用于POSIX系统?(据我所知,它不适用于Windows)
  • 据我所知,Windows为这些目的提供了某种API,有人能指出它吗
我为什么需要这个:

有一个简单的内部web服务器用于调试(我已经编写了一个),我试图弄清楚让这个服务器在现实世界中完全有用有多困难(即直接在80度时侦听,而不是在web服务器和FastCGI或SCGI连接器后面运行)

这是我在这一点上使用的。它进行非常原始的检查。我最想让它安全

我的答案:

有一个答案

似乎已经足够好了

简而言之:在UNIX下使用
realpath
,在Windows下使用
GetFullPathName


最后一点注意:如果有什么建议更详细的功能,我会接受它(特别是在Win32中,路径测试很麻烦-…)

看起来您正在处理路径遍历-。

该链接主要涉及web应用程序,但我认为其中的一些信息会有所帮助。我认为POSIX系统的最佳实践是chroot,不允许访问应用程序根目录之外的路径

看起来您正在处理路径遍历-。

该链接主要涉及web应用程序,但我认为其中的一些信息会有所帮助。我认为POSIX系统的最佳实践是chroot,不允许访问应用程序根目录之外的路径

对于Windows API产品,有一组Shell函数,它们以
Path
Url
开头,可以帮助规范化目录、路径和文件名。例如,将帮助您将任意路径转换为标准表单。从那里你可以做进一步的分析


通常,使用一个特定的允许事项列表,而不是一个不允许事项列表。坏人总是会想到你没有预料到的新东西。

至于Windows API产品,有一组Shell函数,它们以
Path
Url
开头,可以帮助规范化目录、路径和文件名。例如,将帮助您将任意路径转换为标准表单。从那里你可以做进一步的分析


通常,使用一个特定的允许事项列表,而不是一个不允许事项列表。坏人总是会想到你没有预料到的新事物。

但至少最佳实践应该是;)请您对您的Web服务器更具体一点,这是一个专有的解决方案还是基于一些开源Web服务器。我认为,大多数(如果不是全部的话)Web服务器已经有了一些防范此类攻击的措施,因为它们已经存在了很长时间。这是FOSS服务器,但不是基于现有代码。但至少最佳实践应该是;)请您对您的Web服务器更具体一点,这是一个专有的解决方案还是基于一些开源Web服务器。我认为,大多数(如果不是全部的话)Web服务器已经有了一些防范此类攻击的措施,因为它们已经存在多年了。这是FOSS服务器,但不是基于现有代码。谢谢。我知道chroot是最好的方法,但它需要root previleges,并且不能在win32twork上使用。我知道chroot是最好的方法,但它需要根目录前缀,并且在Win32上不可用。不幸的是,如果我通过“./test.txt”它将不会删除“../”。这并不意味着
pathcononicalize
是一个完整的解决方案。它是可以帮助您规范化路径的几个函数之一。你可能不得不和其他人一起使用它。您还可以查看
InternetCrackUrl
“PathCanonicalize”如果我通过了“./test.txt”它将不会删除“../”,这并不意味着
PathCanonicalize
是一个完整的解决方案。它是可以帮助您规范化路径的几个函数之一。你可能不得不和其他人一起使用它。您还可以查看
InternetCrackUrl