$_GET
方法存在一个奇怪的问题。我有一个像这样的PHP代码:
$fopen("files/" . $_GET['file'], "r");
当我写文件路径参数时我自己运行良好但是当我从$ _GET方法获取文件名时它会向我显示一些错误,例如路径错误。
$_GET
方法的特殊编码将其解码为正确的字符串样式。我试过urldecode,但没有做任何改动。答案 0 :(得分:3)
排名第一的规则是清理您的输入。像这样使用$ _GET只是在寻找麻烦。 做正确的事。将$ _GET值放入变量中,验证它是否有效输入然后尝试打开该文件。
答案 1 :(得分:2)
正如底部所说:
还有更多。它还取决于您使用的系统(Win,Unix,Mac ..)。
答案 2 :(得分:1)
不要在没有验证的情况下使用用户输入,特别是不要在主机上打开文件!我不能夸大这是多么危险。如果有人在您的应用程序中输入值为“../../../../../etc/password”的GET字符串,该怎么办?