
安全漏洞
|
323
的防护也很简单、直接和一致。当权限等级改变时,比如用户登录时,用
session_
regenerate_id()
重新生成会话标识符 :
if (check_auth($_POST['username'], $_POST['password'])) {
$_SESSION['auth'] = TRUE;
session_regenerate_id(TRUE);
}
任何用户登录(或其他任何提升权限的操作)都指派新的随机标识符可以有效阻止会话
固定攻击。
文件上传陷阱
文件上传有两个我们讨论过的危险
:用户可修改的数据和文件系统。
PHP 7
自身处理上
传文件是安全的,但对于粗心的程序员也有一些潜在的危险。
不要相信浏览器提供的文件名
要小心使用浏览器发送的文件名,尽量不要用它作为文件系统中的文件名。很简单就可
以让浏览器发送一个标识为
/etc/passwd
或
/home/ramus/.forward
的文件。你可以在所有
用户交互中用浏览器提供的名字,但是要自己生成唯一的名字用来实际调用文件。例如:
$browserName = $_FILES['image']['name'];
$tempName = $_FILES['image']['tmp_name'];
echo "Thanks for sending me {$browserName}.";
$counter++; //
永久变量
$filename = "image_{$counter}";
if (is_uploaded_file($tempName)) ...