10/10/2018, 09:52

Bảo mật cho tài khoản trang admin

mình viết một Web tin tức. mình gặp phải một vấn đề trong trang admin. khi đăng nhập vào để viết bài thì mình dùng Session để lưu lại mật khẩu pass để kiểm tra khi load các trang khác trong admin.
khi thoát ra thì mình clear hết các session đi. nhưng khi nhấn vào nut back, trên trình duyệt thì vẫn vào trang admin bình thường. không đòi hỏi đăng nhập. vậy làm thế nào để khi thoát rồi thì back lại không bị như vậy
BoTayConGaQuay viết 11:56 ngày 10/10/2018
Bác add 2 cái param này vào header thử xem (mục đích là ngăn không cho browser cache lại):

Code:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
longtqdayma viết 12:08 ngày 10/10/2018
cái này không dùng không thấy có tác dụng gì. có cách nào khác nữa không
thuyduongcd viết 12:04 ngày 10/10/2018
Thật ra thì bạn không cần lo về điều này. Bởi vì cái mà bạn gọi là "vào trang admin bình thường" đó thật ra chỉ là bản cache của browser thôi. Mọi thao tác đều không thể thực hiện được. Ví dụ trang bạn có 1 nút "xóa" dành cho admin. Khi back lại, bạn vẫn thấy nút xóa này nhưng khi click vào nó, bạn sẽ được yêu cầu đăng nhập. Vì thật ra session đã bị destroy.

Ngay cả ở diễn đàn này cũng vậy. Bạn thử dùng firefox login vào, sau đó đóng firefox lại một lát cho session hết hiệu lực. Kế tiếp bật firefox lên thì bạn sẽ thấy câu "xin chào ..." (thay vì login form) giống như bạn đã đăng nhập rồi. Nhưng nếu bạn click vào nút trả lời thì nó lại bắt bạn đăng nhập.

Vấn đề này hầu như là bình thường (ngay cả google, yahoo, microsoft... cũng không tránh khỏi) cho nên đừng cố tìm giải pháp làm gì.
tuanit85 viết 12:03 ngày 10/10/2018
Được gửi bởi longtqdayma
mình viết một Web tin tức. mình gặp phải một vấn đề trong trang admin. khi đăng nhập vào để viết bài thì mình dùng Session để lưu lại mật khẩu pass để kiểm tra khi load các trang khác trong admin.
khi thoát ra thì mình clear hết các session đi. nhưng khi nhấn vào nut back, trên trình duyệt thì vẫn vào trang admin bình thường. không đòi hỏi đăng nhập. vậy làm thế nào để khi thoát rồi thì back lại không bị như vậy
Trang Admin bạn cũng kiểm tra $_SESSION['id']

PHP Code:
<?
if($_SESSION***91;'id'***93;)
{
?>

// Nội dung trang Admin

<? 
}
?>

Nếu thoát ra mà có back lại thì cũng đâu còn sử dụng được trang Admin nữa vì nội dung đã hoàn toàn được ẩn hết rồi.
thuyduongcd viết 12:03 ngày 10/10/2018
Được gửi bởi tuanit85
Trang Admin bạn cũng kiểm tra $_SESSION['id']

PHP Code:
<?
if($_SESSION***91;'id'***93;)
{
?>

// Nội dung trang Admin

<? 
}
?>

Nếu thoát ra mà có back lại thì cũng đâu còn sử dụng được trang Admin nữa vì nội dung đã hoàn toàn được ẩn hết rồi.
Cứ thử đi. Khi back lại thì browser không có request đến server mà chỉ show cái html có sẵn nên <?php ?> là vô dụng
s.code viết 11:59 ngày 10/10/2018
Tôi nghĩ bác này clear session ko tốt hoặc chốt chặn check login ko tốt.

Bác thử check session lúc login rồi coi. Khi logout bạn clear session rồi back lại xem giá trị session là gì mà lại hợp lệ.
Bài liên quan
0