嗨我的php项目用户通过表单输入发送主题的名称(它是电报桌面主题制作者)。 (该项目托管于github Github Project) 问题是: 我在主题名称中使用此用户可能访问服务上的任何文件夹。 我尝试使用此提交更正它:Github commit
$theme_name = str_replace("/", "_badyou_", $_GET["name"]); //contains the good themename
我需要这个名字所以我认为消除" /"足够。 但我需要一个比我更了解PHP的人的意见。
对不起我的英语不好。 提前谢谢。答案 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 "使它无害。这也是可能的,因为我没有使用数据库。 我希望这会对某人有所帮助。