【发布时间】:2013-02-22 09:28:50
【问题描述】:
我目前正在用 C 语言编写一个基于 UNIX 套接字的 HTTP 服务器,并且我即将实现 GET 请求的一部分,该部分检查请求的文件以确保它具有适当的权限。
在我对 HTTP 服务器一无所知之前,我设置了一个 Apache 服务器,据我了解,HTTP 服务器在一个目录中查找请求的文件。我不知道这是因为服务器在某种程度上没有目录之外的权限,还是它实际上验证了路径以确保它在目录内。
现在我要自己实现它,我不确定如何正确处理它。 C 中是否有一个函数可以让我确定路径是否在给定目录内(例如 foo/bar/../../baz 在 foo/ 内)?
在python中,我会使用os.path.relpath并检查结果是否以..开头,以确保路径不在给定目录之外。
比如,如果目录是/foo/bar/htdocs,给定的路径是index.html/../../passwords.txt,我要../passwords.txt,所以从前面的..可以看出文件是在/foo/bar/htdocs 目录之外。
【问题讨论】:
-
没有c++?普通的ANSI C?
-
@RicardoOrtegaMagaña 只是简单的 ANSI C,我的导师建议使用它或 Java 来完成作业。
标签: c httpserver