---
title: 前后台 Session 完全隔离的一种实现方式
site: 星湖の小窝
category: 安全
tags: [PHP, 安全, Session]
date: 2026-09-06
updated: 2026-09-06
id: note-session-isolation
---

# 前后台 Session 完全隔离的一种实现方式

默认情况下全站共用一个 `PHPSESSID`，前台用户和后台管理员写在同一个会话数组里，很容易出现越权隐患。

### 做法：切换会话名

```php
function np_session_start($name) {
    if (session_status() === PHP_SESSION_ACTIVE) {
        if (session_name() === $name) return;
        session_write_close();
    }
    session_name($name); // NPUSER / NPADMIN
    session_start();
}
```

前台页面调用 `np_user_session()`，后台页面调用 `np_admin_session()`，两边的 `$_SESSION` 互不可见。

### 再加两点

1. 登录成功后 `session_regenerate_id(true)`，防会话固定。
2. Cookie 打开 `httponly`，JS 拿不到会话 ID。

前台登录态里只存邮箱和登录时间，没有任何多余信息，即使会话被拖走也拿不到隐私数据。
