我想进一步加强访问页面的安全性。我目前在每页的最顶层是这个。有些文章认为这没有帮助$ _SESSION ['HTTP_USER_AGENT']是真的吗?我还通过传递get值来调用一些页面来保护那些使用mysql_real_escape_string旁边的输入的最佳方法吗?
session_start();
if(!( isset($_SESSION['eID']) && !empty($_SESSION['eID']) && isset($_SESSION['uID']) && !empty($_SESSION['uID']) && isset($_SESSION['HTTP_USER_AGENT']) && !empty($_SESSION['HTTP_USER_AGENT']) ))
{
}
else
{
//all other codes goes here.
}
答案 0 :(得分:1)
检查HTTP_USER_AGENT是否存在无法帮助您保护会话。愿意妥协您网站的人会立即伪造一个。
AFAIK,保护$_GET
变量的最佳方法是:
只有这样你才能使用mysql_real_escape_string
。
示例:
if(!(isset($_GET['search'] && is_string($_GET['search']) && preg_match('/[a-zA-Z0-6 \-"\']/', $_GET['search']))) {
die("Search was not set or is invalid");
}
do_some_query(mysql_real_escape_string($_GET['search']));
此外,您不应将此代码放在所有页面的顶部,而是将其放在另一个文件的函数中并调用它。
示例:
sessions.php
中的(不要将此文件放在可以直接调用的位置):
function check_session() {
session_start();
if (isset($_SESSION['id']) && !empty($_SESSION['id'])) //Add more conditions here
return true;
return false;
}
在其他文件中:
require_once(dirname(__FILE__)."/sessions.php");
if (!check_session()) {
die("Forbidden"); //Or redirect to a login page
}