我目前正在使用C语言中的Web服务器。我想确保访问文档根目录之外的文件是不可能的,我需要编写一个检查该文件的请求文件/路径的函数(例如/ index.html)并确保没有办法退出我的文档根目录(例如/../会使它脱离文档根目录)。我正在考虑只是检查../并删除它,但后来有人可以请求.... //,如果我们删除../那将是../再次。是否有一些聪明的方法可以做到这一点,我没有想到?
使用realpath:
realpath - 返回规范化的绝对路径名
它将返回绝对路径名,所有符号链接,所有./
和所有/../
解析。用realpath
解决后再存储“文档根目录”。之后你可以简单地用memcmp
或strcmp
解析路径来记录root,并将已解析的路径名指向你想要测试的路径。