Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP中的$\u会话确保用户登录系统的安全_Php_Mysql_Security_Session - Fatal编程技术网

使用PHP中的$\u会话确保用户登录系统的安全

使用PHP中的$\u会话确保用户登录系统的安全,php,mysql,security,session,Php,Mysql,Security,Session,我希望有人能帮助我,我正在创建一个PHP web应用程序,需要用户登录才能查看mysql数据库中的数据 我只是想知道这是否是一个好方法,是否足够安全?我知道在PHP脚本中没有什么是安全的,但我需要相当安全的 这就是我一步一步地做的,如果你能给我指出正确的方向,告诉我哪里错了,那就太好了 用户使用用户和密码登录 PHP根据数据库检查用户和密码 如果确定,则存储$SESSION[“username”];(没有用户名)到会话 在每次请求/页面加载时,我都有一个功能(如下)来检查会话 功能检查\u会话

我希望有人能帮助我,我正在创建一个PHP web应用程序,需要用户登录才能查看mysql数据库中的数据

我只是想知道这是否是一个好方法,是否足够安全?我知道在PHP脚本中没有什么是安全的,但我需要相当安全的

这就是我一步一步地做的,如果你能给我指出正确的方向,告诉我哪里错了,那就太好了

  • 用户使用用户和密码登录
  • PHP根据数据库检查用户和密码
  • 如果确定,则存储$SESSION[“username”];(没有用户名)到会话

  • 在每次请求/页面加载时,我都有一个功能(如下)来检查会话

    功能检查\u会话\u有效(){ 如果(!isset($_会话['username'])|$_会话['username']==“”){ 标题(“位置:/login.php”); } }

这是安全的还是我完全错了

以下是我认为用户可以做的“黑客”应用程序:

在注册页面上,当用户输入用户名时,会让他们知道用户名是否可用

因此,“黑客”可以不只是找到一个不可用的用户名,然后编写一个PHP脚本在浏览器中设置$_会话[“username”]。然后导航到.index.php页面并登录到其他用户帐户

在我对每个请求执行“检查会话有效性()”之前,我还使用了“会话开始()”,这是错误的吗

希望你们中的一些PHP专家能在这里帮助我


谢谢

我读了你的帖子。你说过“PHP脚本中没有任何东西是安全的”,这真的让我震惊。让我试着回答你的问题

你们说过,若黑客在浏览器中创建cookie,他们会攻击我的会话吗?我的答案是否定的。 让我们了解会话的实际工作方式

首先,当您启动会话时,它将在您的服务器中创建一个具有随机文件名和随机序列号(会话id)的文件,并将其存储在您的浏览器中

其次,当您使用$\u SESSON向会话中添加/编辑值时,将根据从浏览器cookie文件中获取的会话id进行更改。您可以说会话id用作浏览器和服务器会话文件之间的引用

因此,如果您不提供作为cookie保留的会话id,就不可能对会话进行黑客攻击

因此,“黑客”可以不只是找到一个不可用的用户名,然后编写一个PHP脚本在浏览器中设置$_会话[“username”]。然后导航到.index.php页面并登录到其他用户帐户

如果一个黑客可以编写将在你的服务器上运行的代码,那么是的,这是完全可能的

然而,如果他们能把代码放到你的服务器上,他们可以做任何事情。在那一点上你完全被套住了。(会话安全性是您最不担心的)

所以问题来了,除了代码注入攻击,它安全吗

那么,让我们看看可能的攻击向量:

  • 会话劫持

    如果攻击者观察HTTP请求,他们可以从流量中挑选有效用户的cookie,并使用它“劫持”他们的会话

    如果使用HTTPS,则此攻击是不可能的

    所以使用HTTPS

  • 会话固定

    如果您允许基于URL的会话标识符,攻击者可能伪造id并将其发送给受害者。然后,受害者登录,砰的一声,攻击者拥有权限

    您可以通过两种方式防止这种情况:第一,不允许URL中使用会话标识符:

    其次,您应该在登录时旋转会话标识符(
    session\u regenate\u id()


  • 可能是最合适的,并且在代码审查和/或安全交换上得到更好的响应。好的,谢谢,我也在那里发布了。好的,很酷,那么你是说这种方法足够安全吗?不客气。你会从他和他的博客中学到很多。这里有更多关于会话劫持的内容,谢谢你的回复,回答得很好!我现在了解了$u会话的工作原理,非常感谢!我只是想在给出的另一个答案下对此发表评论。你的回答节省了我的时间。