为了账号安全,请及时绑定邮箱和手机立即绑定

基于 php 会话提高 Web 应用程序的安全性

基于 php 会话提高 Web 应用程序的安全性

PHP
Cats萌萌 2022-08-19 15:43:22
我有一个Web应用程序,我想改善它的安全漏洞,我读了很多关于它的文章,但有些问题仍然没有答案。感谢您的帮助。首先,我有一个登录屏幕。用户输入其凭据后,将根据数据库检查它们(它们被正确散列;)),如果成功,服务器将创建一个会话变量//Jhon id = 1    $_SESSION["userID"]= '1';在每个php文件(例如仪表板.php)的开头,我有以下代码:       session_start();        if(isset($_SESSION['userID'])) {            if($_SESSION["userID"]==""){header("location:login.php");}        }else{            header("location:login.php");        } ?>    <html ...为了改进维护,我想将此代码包含在外部php文件中,例如include('inc/restricted.php');?>        <html ...我的两个主要问题是:1)如果入侵者处理损坏或拒绝访问受限.php,仪表板.php的其余部分会显示出来吗?有可能做这样的事情吗?如果是,如何以将安全代码作为外部文件包含在内的方式进行修复?2)正如你所看到的,我的会话变量的值很简单(整数),我应该将它们更改为哈希值吗?我以为php会话存储在服务器端,但我读到一些存储在cookie上的php会话变量,现在我担心创建具有随机数和授予访问权限的cookie的机会。
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

  1. 如果此文件中的代码不安全,则可能。由于我们看不到它,因此不可能说它是如何被损害的。但一般来说,面向Web的请求应该无法控制你的php代码,除非你有一个严重不安全的设置。

  2. 这些值无关紧要。存储在 中的数据永远不会存储在客户端上,而只会存储在服务器上。这在php中由接口控制(默认情况下,它以纯文本文件的形式存储在服务器上)。$_SESSIONsession.handlersession.save_path

倾向于使会话不安全的事情几乎总是由于代码编写不当或服务器配置不当造成的。

您可以采取的一些措施来提高会话的安全性,如下所示:

  1. 在用户登录时始终使用(这可以防止会话固定攻击)。session_regenerate_id(true)

  2. 当您注销用户时,始终删除客户端上的会话 Cookie(请参阅 http://php.net/session-destroy 中的第一个示例)。例如,当用户从公共计算机登录时,这可以防止会话接管攻击,因为会话可能并不总是在服务器端立即删除,并且cookie允许客户端在服务器上重新触发会话TTL。

  3. 仅通过安全连接传输会话 Cookie(请参阅session.cookie_secure

  4. 为了防止某些 XSS 和 CSRF 向量,请考虑使用 session.cookie_httponly 和 session.cookie_samesite 来防止恶意 JS 打开此类攻击。

  5. 始终使用CSRF令牌以及所有修改请求,以保护用户免受通过会话严格损害其访问权限。这是一个额外的安全层。

请记住,这不是一个未删节的列表。安全性是分层构建的,需要在用例和目标中进行大量深思熟虑。


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信