我试图找到一种安全的方式来做到以下几点:
- 用户输入值转换成HTML形式。
- 提交表单。
- PHP使用提交的值作为“SCANDIR”函数的参数。
我的理论是包含在PHP脚本,禁止绝对路径和需要的目录名称包含一定的价值逻辑。
我担心的是,黑客可能会利用我的形式提交自己的价值和访问敏感文件。
这是一个jQuery插件。 我不希望用户必须修改PHP文件。
如何可以在下面的代码被黑客攻击?
<?php
$foo = $_POST["some_directory"];
//validate $foo
//make sure path to directory is relative
$foo_url_test = parse_url($foo);
if (isset($foo_url_test['scheme']) || isset($foo_url_test['host'])) {
$foo = NULL;
}
//make sure the directory name contains 'bar123'
$foo_name_test = preg_split('_[\\\\/]_', $foo);
$foo_name_test = end($foo_name_test);
$foo_name_test = strpos($foo_name_test,'bar123');
if ($foo_name_test === false) {
$foo = NULL;
}
//make sure the path does not contain '..'
$foo_dot_dot_test = strpos($foo,'..');
if ($foo_dot_dot_test == TRUE || $foo_dot_dot_test === 0) {
$foo = NULL;
}
//get files
$files_array = scandir($foo);
?>