如何保护php会话?我仍然可以使用curl(Linux)查看源代码

如何保护php会话?我仍然可以使用curl(Linux)查看源代码,php,Php,我试图通过php会话在Debian服务器上确保我的网页登录安全。我有以下文件: |-- index.php |-- site.php |-- php | |-- config.php | |-- login.php | `-- session.php 在“config.php”中,我编写了与MySQL的连接。在“login.php”中,我检查数据库是否有有效的登录名,并告诉会话用户的用户名,然后重定向到“site.php” 在“session.php”中,我创建了一个会话cooki

我试图通过php会话在Debian服务器上确保我的网页登录安全。我有以下文件:

|-- index.php
|-- site.php
|-- php
|   |-- config.php
|   |-- login.php
|   `-- session.php
在“config.php”中,我编写了与MySQL的连接。在“login.php”中,我检查数据库是否有有效的登录名,并告诉会话用户的用户名,然后重定向到“site.php”

在“session.php”中,我创建了一个会话cookie,当您没有会话cookie时,您将被重定向到index.php:

include('php/config.php');
session_start([
'cookie_lifetime' => 86400,
'read_and_close'  => true,
]);

if(!isset($_SESSION['login_user']))
  header("location:index.php");
my php.ini文件重要行:

session.save_handler = files
session.use_cookies = 1
session.cookie_secure = 1
session.use_only_cookies = 1
session.cookie_domain = "example.com"
session.cookie_httponly = 1
session.entropy_length = 32
session.entropy_file = /dev/urandom
session.hash_function = sha256
session.hash_bits_per_character = 5
其目的是保护“site.php”的安全,我在这个文件中包含了“session.php”和cookie,因此您只能通过cookie查看“site.php”的内容。因此,如果我想转到site.php,没有cookie,我会被重定向到index.php,但如果我键入:

curl https://<mysite>/site.php
curlhttps:///site.php
在客户端机器上,我得到site.php的源代码,而没有cookie。如何确保即使使用“curl”也看不到源代码

问候

编辑:我不够清楚,我的意思是我可以看到“site.php”的HTML/JS源代码,而不是php源代码。

Do:

if(!isset($_SESSION['login_user'])) {
  header("location:index.php");
  die();
}
而不是:

if(!isset($_SESSION['login_user']))
  header("location:index.php");

header(“location:index.php”)
只发送一个header来告诉浏览器重定向,但它不会中止代码/输出。

这可能有助于发现问题:查看它是否与脚本匹配:您是否确实获得了
start.php
的源代码(php代码)?那么还有别的问题。发出curl请求不应该提供源代码,该请求还应该通过web服务器和PHP解释器。如果是您得到的HTML,请尝试添加
exit
在所有
头('location:..')
-调用后停止页面执行并立即发送头。另外,我认为您首先需要执行
会话\u start()
,不带任何参数。因为您只能在那里传递选项(),而不能像您正在尝试的那样设置键。@caramba-OP版本的
session\u start()
实际上取自该页面上的一个示例(示例#4),所以我认为它应该是有效的。但是,由于代码实际上设置了会话值,并且示例仅为
read\u和\u close
,因此应将其忽略。@MagnusEriksson感谢您指出这一点!
if(!isset($_SESSION['login_user']))
  header("location:index.php");