簡體   English   中英

Php session 數據是否安全?

[英]Is Php session data secure?

讓我們假設一些經過驗證的數據使用 session 參數從一個 PHP 頁面傳遞到另一個頁面。

我如何確定在第二個 php 頁面上,這個 session 數據仍然是我在第一個 php 頁面上驗證的數據? 據我了解,session 數據存儲在用戶計算機上的 cookies 中。 那么是什么阻止用戶將損壞的數據注入到該會話 cookie 中呢?

因為在我的場景中,我需要依賴這樣一個事實,即傳遞到第二頁的數據已經過驗證。

所以主要問題是如何將經過驗證的數據從一個頁面安全地傳遞到另一個頁面?

非常感謝,弗洛

會話數據本身存儲在服務器端。 存儲在客戶端計算機上的唯一內容是具有唯一標識符的 cookie,因此服務器知道在服務器端加載哪個會話。

用戶無法操縱存儲在會話本身中的數據,因此從這個意義上說,會話是安全的。

當然,cookie 本身可能會從用戶那里竊取並被另一個用戶使用(這種做法稱為“會話劫持”)。 您可以通過例如將會話鎖定到他們的 IP 地址、瀏覽器版本等並使用 HTTPS 來保護他們免受人們嗅探連接的影響,從而保護您的用戶免受此攻擊。

不存儲會話數據是cookies。將會話數據存儲在服務器端$_SESSION[]。例如

<?php
session_start();
// VALIDATION CODE
$_SESSION['name'] = 'Validation name';
?>

現在在第二頁檢查是否設置了此會話。 如果已設置,則驗證用戶

<?php
session_start();
if(isset($_SESSION['name'])){
 // USER IS VALIDATED
}else{
// UNAUTHORiZED Access
}
?>

這將是服務器端,因此您無需一次又一次地驗證。 謝謝

會話數據僅存儲在服務器端,因此用戶無法在會話中編輯任何內容,因此將假設第 1 頁上驗證的數據與第 2 頁上的相同數據進行保存。

// Page1.php
// Set the session on page 1
session_start();
$_SESSION['myValue'] = 'secure_value';

// Page2.php
// Get the session on page 2
session_start();
$validValue = $_SESSION['myValue'];

不要在 cookie 中存儲任何敏感信息,因為它們存儲在客戶端並且可以更改!

據我了解,會話數據存儲在用戶計算機上的 cookie 中。

不是。

會話數據存儲在服務器上,並通過 cookie 與特定用戶+瀏覽器相關聯。

通過編輯 cookie,用戶只能:

  • 訪問其他人的 cookie(不太可能)
  • 獲取一個新的空會話

請注意,還有一個會話 cookie ,用於將數據存儲在客戶端上。 這是一個沒有過期數據的常規 cookie,瀏覽器關閉時會過期。 這種類型的 cookie 通常用於在客戶端存儲會話 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM