10/10/2018, 00:23
Cho mình hỏi về sID trên QueryString
Mình thấy nó được dùng trên các website nhưng không biết nó có công dụng gì, mong các bạn nhiều kinh nghiệm chỉ giáo.
Bài liên quan
Khi một người triệu gọi trang web lần đầu tiên ứng dụng sẽ gọi session_start() để tạo ra sesion cho user. PHP sẽ tự động sinh ngẫu nhiên một định danh khác nhau cho mỗi user. Và sau đó nó send tạo một trên cookies với tên mặc định là PHPSESSID bạn có thể thay đổi tên mặc định của nó bằng cách thay đổi nó trong php.ini hoặc dùng hàm session_name() . Từ lần viếng thăm sau nó sẽ định danh user bằng cookies. Tuy nhiên có thể gán session qua chuỗi truy vấn. Đây là cách dễ ràng để tấn công session fixation bởi vì kẻ tấn công có thể thay đổi giá trị PHPSESSID. Cách phổ biến là lưu trữ link trong ứng dụng của bạn nối thêm session id và sau dụ ngưòi dùng kích vào
<a href="http://example.org/index.php?PHPSESSID=1234">Click here</a>
Trong khi truy cấp thường hay lưu thông tin đăng nhập trong session.
Ví dụ như "http://lovepm.olympe-network.com/?action=display&cid=cGpZmIx2djrDWFJZxJmUqd5ZyAqYXK W22tp&pid=u_T7IDXl_foox0JEExBI6EVZ635uT1l8OVdTELnH ph9cEWsNiozX71UW&sid=Y3XdHhwK5N5WcJV3cWJ7JPYfvoKcx tjtqK_jmwCztR" thì sid=Y3XdHhwK5N5WcJV3cWJ7JPYfvoKcxtjtqK_jmwCztR tương ứng với phần thứ 3 trong tác phẩm Nguyệt Ma.
Cho mình hỏi rõ thêm chi tiết về vấn đề này, nó hỗ trợ trong trường hợp disable cookie/non-support, nhưng là hỗ trợ về cái gì.? Vì đơn thuần thì mình chỉ thấy nó được tạo ra trong các source code, (bằng một chuỗi ngẫu nhiên) tức là trong chuỗi đó không hề chứa thông tin gì được mã hoá cả.
Hay là chuỗi này chỉ để định danh người dùng.?
Mình không hiểu nhiều về cookie, nhưng tạm biết là nó dùng để lưu những dữ liệu (không quan trọng); Trong trường hợp này, SID được dùng để thay thế, nhưng tại sao nó lại không lưu gì trên đó cả.?
Cách sử dụng nó như thế nào:?
Theo như một số source code mà mình có thì không phải lúc nào nó cũng truyền SID lên query, như vậy thì khi nào mới dùng và khi nào không dùng SID.?
bạn tham khảo tại đây:
http://herofit.net/forum/viewtopic.php?f=13&t=429
phần III. Bảo mật Session
have fun !
Nhờ giá trị này php mới xác định được đâu là session của user hiện tại => retrieve được các dữ liệu bạn lưu trong session ứng với user này.
Nôm na là khi hàm session_start được gọi, nếu php "tìm thấy" session id thì php sẽ lấy các dữ liệu ứng với sid đó cho bạn sử dụng (lúc này bạn có thể truy cập các dữ liệu ấy thông qua mảng $_SESSION), còn nếu không thấy thì php xem như có 1 session mới và nó sẽ tạo 1 session id mới.
php "tìm thấy" sid dựa trên cấu hình 1 field trong cấu hình file php.ini :
variables_order = "EGPCS" (Environment, GET, POST, Cookie, Server)
Mặc định giá trị này là EGPCS nên khi bạn append sid vào query string thì nó sẽ nhận sid trên GET trước thay vì nhận trong Cookie
(cấu hình variables_order cũng dùng cho $_REQUEST)
[=========> Bổ sung bài viết <=========]
Session & Cookie không liên quan gì mấy (theo mình nghĩ) <-
Một khi mình quyết định lưu mọi thứ trên session thì mình chả cần phải để ý đến cookie để làm gì, và chuyện web browser có hỗ trợ cookie hay không cũng chả hề liên quan gì đến hoạt động của site.
Mình chỉ xem:
+ Session dùng để lưu thông tin (và không thể hiện dưới client)
+ Cookie dùng để lưu thông tin (và có thể hiện dưới client)
Vậy, trường hợp đặt ra là khi mình muốn dùng cả cookie & session. Khi truy cập vào site, máy chủ sẽ cấp cho client 1 session, gọi là SessionID.
Vấn đề mình thắc mắc là:
+ Chuỗi được gán vào SID để truyền lên queryString không phải là SessionID do Server cấp, mà nó được coder tạo ra theo cách riêng.
Thế thì, tại sao web browser không hỗ trợ cookie, thì ta lại dùng chuỗi này để truyền lên querystring. Và có phải (nếu trình duyệt không hỗ trợ cookie) thì lúc nào ta dùng kèm theo chuỗi này trong các link trên website.