【问题标题】:Php session security hardeningphp会话安全加固
【发布时间】:2013-11-14 14:22:09
【问题描述】:

我想进一步加强访问页面的安全性。我目前拥有的每一页的最顶部就是这个。有些文章认为这没有帮助 $_SESSION['HTTP_USER_AGENT'] 是真的吗?除了使用 mysql_real_escape_string 之外,我还通过传递 get 值来保护这些输入的任何最佳方式来调用一些页面?

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.

}

【问题讨论】:

    标签: php session


    【解决方案1】:

    检查 HTTP_USER_AGENT 的存在不会帮助您保护会话。愿意破坏您网站的人会立即伪造一个。

    AFAIK,保护$_GET 变量的最佳方法是:

    • 确保它存在。
    • 检查其类型是否正确(intfloatstringarray 等)
    • 检查内容是否有效且允许(例如:页码为正数,字符串没有特殊字符)。对于字符串,您可以使用regular expressions

    只有这样你才应该使用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
    }
    

    【讨论】:

    • 是的,其他一些文章确实说 HTTP_USER_AGENT 不会有太大帮助。那么如何最好地保护会话以确保只有有效用户访问而不是某些扫描仪等?对于_GET,您通常如何确保它存在您的意思是检查不为空?如果它是varchar,如何检查类型?对于字符串,在存储到数据库方面允许或有效的内容是什么?我应该在你的意思是说整个 if 和 else 的函数中放入哪个部分?
    • 你到底想要什么?只允许有效且已登录的用户,还是允许任何看起来不像机器人/扫描器的东西?
    • Mysql ``varchars` 是 php 中的字符串。 “有效内容”的概念取决于您的应用程序。例如,当有人提交用户名或电子邮件地址时,您应该检查非标准字符。
    • @我只想允许有效且已登录的用户,并禁用其他用户甚至机器人或扫描仪的任何其他访问权限
    • 实际上,当用户输入时,我确实签入了 javascript,但获取的值不会有帮助。什么被定义为非标准字符。通常我有一个带有搜索功能的文本框,我很担心那个。
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2020-04-16
    • 2011-02-11
    • 2012-12-29
    相关资源
    最近更新 更多