我怎样才能提高这个php代码的安全性?
问题描述:
我创建的PHP代码:我怎样才能提高这个php代码的安全性?
<?php
include("../config.php");
if(!isset($_COOKIE["sessionid"])) {
header("location:../error_pages/403.php");
} else {
$value = $_COOKIE["sessionid"];
$query = "SELECT * FROM users WHERE sessionid = ?";
$stmt = $conn->prepare($query);
$stmt->bind_param("s",$value);
$stmt->execute();
$result = $stmt->get_result();
$rowcount = $result->num_rows;
if ($rowcount != 1) {
header("location:../error_pages/403.php");
} else {
$file = "/path/to/file/";
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.basename("File_Name"));
ob_clean();
flush();
readfile($file);
}
};
?>
我不知道是否有一种方法的会话ID的cookie可以被操纵,以允许SQL注入。以及此下载是否安全。该文件不存储在可公开访问的文件夹中。
答
通过使用查询参数,您可以安全地进行SQL注入。
您的代码可能容易受到会话劫持。以下是一些提示和资源:
- 对所有请求使用TLS(https),这会破坏数据包嗅探器。
- http://phpsecurity.org/有关于会话管理的免费样章。或者拿到整本书,这很好。
- What is the best way to prevent session hijacking?
- https://www.owasp.org/index.php/Session_Management_Cheat_Sheet
如果有人能读懂你的Cookie(物理或波谷某种形式的XSS或任何其他methdo),你可以撕裂自己的SessionID,使会话窃取容易。这不是很冷。 – Nanne
@Nanne我怎样才能避免会话被盗? –
堆栈溢出很容易出现精英主义。为什么这次再次投票呢? –