用户输入中的路径注入

时间:2017-01-16 10:58:52

标签: php security

嗨我的php项目用户通过表单输入发送主题的名称(它是电报桌面主题制作者)。 (该项目托管于github Github Project) 问题是:  我在主题名称中使用此用户可能访问服务上的任何文件夹。 我尝试使用此提交更正它:Github commit

$theme_name = str_replace("/", "_badyou_", $_GET["name"]); //contains the good themename

我需要这个名字所以我认为消除" /"足够。 但我需要一个比我更了解PHP的人的意见。

对不起我的英语不好。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

好吧,您似乎正在尝试保护代码免受代码注入攻击。代码注入允许攻击者强制执行恶意代码。这可以通过在URL中传递恶意代码来完成。有关详细信息,请参阅此链接:https://www.owasp.org/index.php/Code_Injection。另请参见此链接:http://www.derby-web-design-agency.co.uk/blog-post/what-is-and-how-to-prevent-url-injections-in-php/11/

为防止代码注入,开发人员应验证发送到应用程序的所有输入。 Php提供了几种验证和清理数据的功能。例如:trim()strip_tags()htmlentities()mysqli_real_escape_string()

答案 1 :(得分:0)

在过去的几天里,我看到使用以下代码就足够了。

$theme_name = str_replace("/", "_badyou_", $_GET["name"]); //contains the good themename

$ theme_name用于创建文件,如/dir_to_folder/$theme_name/$theme_name.tdesktop-theme

有人已经尝试攻击我的文件系统但是他们失败了,因为该功能正在改变" /"字符与" badyou "使它无害。这也是可能的,因为我没有使用数据库。 我希望这会对某人有所帮助。