如何防止客户端可以在服务器的任何目录中搜索文件?
How can I prevent that a Client can search a file in any directory of the Server?
我在 Linux 开发的一个大学项目,使用 C 语言,一个客户端和一个服务器。当我 运行 我的客户端时,我将文件名(一个或多个)作为程序的参数传递给服务器请求。服务器应在其当前目录中搜索具有相应名称的文件,如果找到它,则将其发送给客户端。如果作为文件名我只使用文件的名称,例如try.txt,这一切都可以,但是我如何避免使用我的客户端的人试图上路径并在其他目录中搜索文件,对于例如写“../try.txt”?
这取决于您如何在服务器端实现搜索。最简单和明显但并非总是正确的答案是从您获得的搜索字符串中去除斜杠 /
。
但是,如果您使用 shell 命令使用 system()
实现搜索,例如 find
并且您的文件名连接在一起,您需要一个严格的用户输入过滤功能,因为否则可以使用准备好的搜索字符串
执行随机 shell 命令
我在 Linux 开发的一个大学项目,使用 C 语言,一个客户端和一个服务器。当我 运行 我的客户端时,我将文件名(一个或多个)作为程序的参数传递给服务器请求。服务器应在其当前目录中搜索具有相应名称的文件,如果找到它,则将其发送给客户端。如果作为文件名我只使用文件的名称,例如try.txt,这一切都可以,但是我如何避免使用我的客户端的人试图上路径并在其他目录中搜索文件,对于例如写“../try.txt”?
这取决于您如何在服务器端实现搜索。最简单和明显但并非总是正确的答案是从您获得的搜索字符串中去除斜杠 /
。
但是,如果您使用 shell 命令使用 system()
实现搜索,例如 find
并且您的文件名连接在一起,您需要一个严格的用户输入过滤功能,因为否则可以使用准备好的搜索字符串