【发布时间】:2011-10-27 04:10:59
【问题描述】:
我正在使用这样的“干净”网址:
http://localhost/controller/action/param
我使用 my_get(1)、my_get(2) 等自定义函数访问参数...
但有时我认为我需要将它们与查询字符串结合起来。 例如:如果我需要包含带有多个斜杠的路径的参数值,例如:
http://localhost/controller/action/param?mypath=foo/bar/qux.jpg
我这样做是因为如果使用干净的 URL 来实现会有点困难。
现在我的问题是,在结合干净的 URL 和查询字符串时,我只打算允许这个字符类:
[.&=a-z0-9\/_-]
我想知道它是否存在任何安全问题?我应该禁止某些字符吗?
【问题讨论】:
-
我认为您无需担心斜线和字符,而更多地担心您对该路径的操作。如果我将路径变量更改为 ../../../etc/passwd 会怎样?查找路径清理
-
您打算如何处理查询参数的值?字符串本身不会造成安全风险。
-
上例中的@Inerdia,mypath的值会被unlink()删除;
-
@Ashley 正在阅读相关内容,使用
$f = realpath($_GET['file']); unlink($f);而不是普通的unlink($_GET['file']);是否安全?您将如何检查上述示例中的“黑客攻击”? -
@IMB:
realpath是一个好的开始,但您还必须验证真实路径是否安全——您存储数据文件的位置的子目录。
标签: php