Hướng dẫn can php session be manipulated? - phiên php có thể được thao tác?

Thí dụ

Biến $_SESSION là một mảng và bạn có thể truy xuất hoặc thao tác nó như một mảng bình thường.

Show

Cũng xem thao tác một mảng để tham khảo thêm cách làm việc trên một mảng.

Lưu ý rằng nếu bạn lưu trữ một đối tượng trong một phiên, nó chỉ có thể được lấy một cách duyên dáng nếu bạn có trình tải tự động lớp hoặc bạn đã tải lớp rồi. Nếu không, đối tượng sẽ xuất hiện dưới dạng loại __PHP_Incomplete_Class, sau đó có thể dẫn đến sự cố. Xem tên và tự động tải về tự động tải.

Warning:

Dữ liệu phiên có thể bị tấn công. Điều này được nêu trong: Pro Php Security: Từ các nguyên tắc bảo mật ứng dụng đến việc thực hiện Quốc phòng XSS - Chương 7: Ngăn chặn vụ cướp phá vụ để có thể được khuyến nghị không bao giờ lưu trữ bất kỳ thông tin cá nhân nào trong $_SESSION. Điều này sẽ được phê phán nhiều nhất bao gồm số thẻ tín dụng, ID và mật khẩu do chính phủ cấp; Nhưng cũng sẽ mở rộng thành ít dữ liệu hơn như tên, email, số điện thoại, v.v. sẽ cho phép một hacker mạo danh/thỏa hiệp với người dùng hợp pháp. Theo nguyên tắc chung, sử dụng các giá trị vô giá trị/phi cá nhân, chẳng hạn như số nhận dạng số, trong dữ liệu phiên.credit card numbers, government issued ids, and passwords; but would also extend into less assuming data like names, emails, phone numbers, etc which would allow a hacker to impersonate/compromise a legitimate user. As a general rule, use worthless/non-personal values, such as numerical identifiers, in session data.




Mike có một câu trả lời tốt. Tôi không biết tại sao anh ta được bỏ phiếu (vì vậy tôi đã bỏ phiếu cho anh ta trở lại). Tôi vừa tham gia để tôi không thể bình luận, nhưng tôi muốn cố gắng giải thích lý do của Mike, bởi vì anh ấy đang đưa ra một điểm tốt.

Câu hỏi ban đầu là:

Một trong những tập lệnh của chúng tôi sử dụng biến $ _Session và tôi không chắc liệu điều đó có dễ bị thao túng từ bên ngoài như một biến $ _POST là ...

Tôi giải thích điều này là hỏi, "Người dùng có thể thao túng $ _Session trực tiếp từ yêu cầu HTTP, như anh ta có thể làm với $ _Cookie, $ _Post và $ _get?"

Nói cách khác, PHP theo nghĩa đen sẽ lấy dữ liệu người dùng từ các tiêu đề hoặc cơ thể yêu cầu và cất vào ba superglobal đó. Nhưng nó sẽ làm điều tương tự cho $ _Session?

Câu trả lời là (trong hầu hết các trường hợp) chắc chắn không. Lưu trữ phiên mặc định trong PHP là "tệp", có nghĩa là các phiên được tuần tự hóa và ghi vào một tệp trên hệ thống tập tin cục bộ. Người dùng không có cách nào để thao tác trực tiếp nội dung của phiên.

Bây giờ, như những người khác đã chỉ ra ở trên, nếu bạn làm điều gì đó như thế này:

$_SESSION['foo'] = $_POST['bar'];

Sau đó, người dùng bây giờ có thể ảnh hưởng gián tiếp đến $ _Session bằng cách ảnh hưởng đến $ _POST! Tất nhiên điều này là đúng, nhưng tôi không thấy đây là điểm của câu hỏi. Người dùng có thể ảnh hưởng đến bất cứ điều gì nếu bạn không vệ sinh đầu vào của người dùng. Vấn đề là để biết những gì đầu vào không được vệ sinh và biết cách vệ sinh chúng trước khi sử dụng chúng.

Những lời chỉ trích của Karrax ở trên là:

Nếu XSS thay đổi các giá trị trên máy khách sau đó được sử dụng trong biến phiên, bạn đã thay đổi thành công $ _Session bằng cách sử dụng XSS.

Tất nhiên điều này là đúng, nhưng đó không phải là điểm của câu hỏi. Theo logic của bạn, chúng ta cũng có thể nói rằng, "Đầu vào người dùng độc hại có thể phóng tên lửa lên mặt trăng." Đây là một tuyên bố thực sự nếu ai đó tại NASA quên vệ sinh đầu vào người dùng của họ trong ứng dụng điều khiển tên lửa, nhưng đó là một vấn đề với phần mềm của NASA, không phải là rủi ro vốn có trong PHP.

Thật không may, PHP không làm cho nó rõ ràng những siêu thị nào không bị ảnh hưởng và bị nhiễm độc. Hiểu được sự khác biệt đòi hỏi sự hiểu biết ở cấp độ trung gian về giao thức HTTP và cách quá trình chạy PHP thời gian chạy HTTP yêu cầu và chu kỳ phản hồi.

Bảo mật phiên

Mô -đun phiên không thể đảm bảo rằng thông tin được lưu trữ trong phiên chỉ được xem bởi người dùng đã tạo phiên. Các biện pháp bổ sung là cần thiết để bảo vệ tính bảo mật của phiên, tùy thuộc vào giá trị liên quan đến nó.

Tầm quan trọng của dữ liệu được thực hiện trong phiên cần được đánh giá và bảo vệ hơn nữa có thể được triển khai; Điều này thường có giá, chẳng hạn như giảm sự tiện lợi cho người dùng. Ví dụ, để bảo vệ người dùng khỏi một chiến thuật kỹ thuật xã hội đơn giản, session.use_only_cookies cần được bật. Trong trường hợp đó, cookie phải được kích hoạt vô điều kiện ở phía máy khách hoặc các phiên sẽ không hoạt động.

Có một số cách để rò rỉ ID phiên hiện có cho các bên thứ ba. Ví dụ. Tiêm JavaScript, ID phiên trong URL, Gói đánh hơi, truy cập vật lý vào thiết bị, v.v. ID phiên bị rò rỉ cho phép bên thứ ba truy cập tất cả các tài nguyên liên quan đến ID cụ thể. Đầu tiên, URL mang ID phiên. Nếu có các liên kết đến một trang web hoặc tài nguyên bên ngoài, URL bao gồm ID phiên có thể được lưu trữ trong nhật ký giới thiệu của trang web bên ngoài. Thứ hai, một kẻ tấn công tích cực hơn có thể lắng nghe lưu lượng mạng. Nếu nó không được mã hóa, ID phiên sẽ chảy trong văn bản đơn giản qua mạng. Giải pháp là triển khai SSL/TLS trên máy chủ và làm cho nó bắt buộc đối với người dùng. HST nên được sử dụng để cải thiện bảo mật.

Lưu ý: Ngay cả HTTPS cũng không thể bảo vệ dữ liệu bí mật mọi lúc. Ví dụ, các lỗ hổng tội phạm và quái thú có thể cho phép kẻ tấn công đọc dữ liệu. Ngoài ra, lưu ý rằng nhiều mạng sử dụng các proxy HTTPS MITM cho mục đích kiểm toán. Những kẻ tấn công cũng có thể thiết lập một proxy như vậy.: Even HTTPS can not protect confidential data at all times. For example the CRIME and Beast vulnerabilities may enable an attacker to read the data. Also, note that many networks employ HTTPS MITM proxies for audit purposes. Attackers may also set up such a proxy.

Quản lý phiên không thích hợp

Trình quản lý phiên của PHP hiện đang thích ứng theo mặc định. Một người quản lý phiên thích ứng chịu rủi ro bổ sung.

Khi phiên.USE_STRICT_MODE được bật và Trình xử lý Save Save hỗ trợ nó, ID phiên không chính thức bị từ chối và một phiên bản mới được tạo. Điều này ngăn chặn một cuộc tấn công buộc người dùng sử dụng ID phiên đã biết. Kẻ tấn công có thể dán liên kết hoặc gửi email có chứa ID phiên. Ví dụ. http://example.com/page.php?PHPSESSID=123456789 Nếu phiên.USE_TRANS_SID được bật, nạn nhân sẽ bắt đầu một phiên bằng ID phiên do kẻ tấn công cung cấp. phiên.use_strict_mode giảm thiểu rủi ro này.

Cảnh báo

Người dùng do người dùng xử lý cũng có thể hỗ trợ chế độ phiên nghiêm ngặt bằng cách thực hiện xác thực ID phiên. Tất cả các trình xử lý lưu định nghĩa người dùng nên thực hiện xác thực ID phiên.

Cookie ID phiên có thể được đặt với tên miền, đường dẫn, httponly, an toàn và, kể từ Php 7.3, các thuộc tính Samesite. Có ưu tiên được xác định bởi các trình duyệt. Bằng cách sử dụng ưu tiên, kẻ tấn công có thể đặt ID phiên có thể được sử dụng vĩnh viễn. Sử dụng phiên.use_only_cookies sẽ không giải quyết vấn đề này. phiên.use_strict_mode giảm thiểu rủi ro này. Với session.use_strict_mode = ON, ID phiên không được chỉ định sẽ bị từ chối.

Lưu ý: Mặc dù session.use_strict_mode giảm thiểu rủi ro quản lý phiên thích ứng, kẻ tấn công có thể buộc người dùng sử dụng ID phiên khởi tạo được tạo bởi kẻ tấn công. Ví dụ. Tiêm JavaScript. Cuộc tấn công này có thể được giảm thiểu theo các khuyến nghị của hướng dẫn này. Bằng cách làm theo hướng dẫn này, các nhà phát triển sẽ kích hoạt, session.use_strict_mode, sử dụng quản lý phiên dựa trên dấu thời gian và tái tạo ID phiên bằng session_regenerate_id () với các quy trình được đề xuất. Nếu các nhà phát triển theo dõi tất cả các điều trên, ID phiên tạo ra kẻ tấn công cuối cùng sẽ bị xóa. Khi xảy ra quyền truy cập vào phiên lỗi thời, các nhà phát triển nên lưu tất cả dữ liệu phiên hoạt động của người dùng. Vì thông tin này sẽ có liên quan cho một cuộc điều tra tiếp theo. Người dùng nên được đăng nhập mạnh mẽ trong tất cả các phiên, tức là yêu cầu họ phải ủy quyền. Điều này ngăn chặn những kẻ tấn công lạm dụng các phiên bị đánh cắp.: Even though session.use_strict_mode mitigates the risk of adaptive session management, an attacker can force users to use an initialized session ID which has been created by an attacker. E.g. JavaScript injection. This attack can be mitigated by this manual's recommendations. By following this manual, developers should enable, session.use_strict_mode, use timestamp based session management, and regenerate session IDs using session_regenerate_id() with recommended procedures. If developers follow all of the above, an attacker generated session ID will eventually be deleted. When an access to an obsolete session occurs, developers should save all active session data of the user. As this information will be relevant for an ensuing investigation. The user should be forcefully logged out of all sessions, i.e. require them to reauthenticate. This prevents attackers from abusing stolen sessions.

Cảnh báo

Người dùng do người dùng xử lý cũng có thể hỗ trợ chế độ phiên nghiêm ngặt bằng cách thực hiện xác thực ID phiên. Tất cả các trình xử lý lưu định nghĩa người dùng nên thực hiện xác thực ID phiên.

Cookie ID phiên có thể được đặt với tên miền, đường dẫn, httponly, an toàn và, kể từ Php 7.3, các thuộc tính Samesite. Có ưu tiên được xác định bởi các trình duyệt. Bằng cách sử dụng ưu tiên, kẻ tấn công có thể đặt ID phiên có thể được sử dụng vĩnh viễn. Sử dụng phiên.use_only_cookies sẽ không giải quyết vấn đề này. phiên.use_strict_mode giảm thiểu rủi ro này. Với session.use_strict_mode = ON, ID phiên không được chỉ định sẽ bị từ chối.session_create_id() has been added. This function may be operated to access all active sessions of a user efficiently by prefixing the session IDs with the user ID. Enabling session.use_strict_mode is vital with this setup. Otherwise, malicious users can set malicious session ID for other users.

Lưu ý: Mặc dù session.use_strict_mode giảm thiểu rủi ro quản lý phiên thích ứng, kẻ tấn công có thể buộc người dùng sử dụng ID phiên khởi tạo được tạo bởi kẻ tấn công. Ví dụ. Tiêm JavaScript. Cuộc tấn công này có thể được giảm thiểu theo các khuyến nghị của hướng dẫn này. Bằng cách làm theo hướng dẫn này, các nhà phát triển sẽ kích hoạt, session.use_strict_mode, sử dụng quản lý phiên dựa trên dấu thời gian và tái tạo ID phiên bằng session_regenerate_id () với các quy trình được đề xuất. Nếu các nhà phát triển theo dõi tất cả các điều trên, ID phiên tạo ra kẻ tấn công cuối cùng sẽ bị xóa. Khi xảy ra quyền truy cập vào phiên lỗi thời, các nhà phát triển nên lưu tất cả dữ liệu phiên hoạt động của người dùng. Vì thông tin này sẽ có liên quan cho một cuộc điều tra tiếp theo. Người dùng nên được đăng nhập mạnh mẽ trong tất cả các phiên, tức là yêu cầu họ phải ủy quyền. Điều này ngăn chặn những kẻ tấn công lạm dụng các phiên bị đánh cắp.: Users prior to PHP 7.1.0 SHOULD use CSPRNG, e.g. /dev/urandom, or random_bytes() and hash functions to generate a new session ID. session_create_id() has collision detection and generates a session ID according to the session's INI settings. Use of session_create_id() is preferred.

Truy cập vào một phiên lỗi thời không nhất thiết phải đề xuất một cuộc tấn công. Một mạng không ổn định và/hoặc xóa ngay phiên hoạt động sẽ dẫn đến người dùng hợp pháp bằng cách sử dụng các phiên lỗi thời.

Kể từ Php 7.1.0, session_create_id () đã được thêm vào. Hàm này có thể được vận hành để truy cập tất cả các phiên hoạt động của người dùng một cách hiệu quả bằng cách tiền tố ID phiên với ID người dùng. Kích hoạt phiên.use_strict_mode rất quan trọng với thiết lập này. Nếu không, người dùng độc hại có thể đặt ID phiên độc hại cho người dùng khác.session_regenerate_id() for session security.

Lưu ý: Người dùng trước Php 7.1.0 nên sử dụng CSPRNG, ví dụ: /dev/urandom, hoặc ngẫu nhiên_bytes () và các hàm băm để tạo ID phiên mới. session_create_id () có phát hiện va chạm và tạo ID phiên theo cài đặt INI của phiên. Sử dụng session_create_id () được ưa thích.session_regenerate_id() must be called periodically. E.g. Regenerate the session ID every 15 minutes for security sensitive content. Even in the case that a session ID is stolen, both the legitimate user's and the attacker's session will expire. In other words access by the user or the attacker will generate an obsolete session access error.

Tái sinh ID phiênsession_regenerate_id() must be called prior to setting the authentication information to $_SESSION. (session_regenerate_id() saves the current session data automatically in order to save timestamp/etc. to the current session.) Ensure only the new session contains the authenticated flag.

session.use_strict_mode là một giảm thiểu tốt, tuy nhiên không đủ. Các nhà phát triển phải sử dụng như nhau session_regenerate_id () cho bảo mật phiên.

Tái tạo ID phiên làm giảm nguy cơ ID phiên bị đánh cắp, do đó session_regenerate_id () phải được gọi định kỳ. Ví dụ. Tái tạo ID phiên cứ sau 15 phút cho nội dung nhạy cảm bảo mật. Ngay cả trong trường hợp ID phiên bị đánh cắp, cả người dùng hợp pháp và phiên của kẻ tấn công sẽ hết hạn. Nói cách khác, quyền truy cập của người dùng hoặc kẻ tấn công sẽ tạo ra lỗi truy cập phiên lỗi thời.

Cảnh báo

Người dùng do người dùng xử lý cũng có thể hỗ trợ chế độ phiên nghiêm ngặt bằng cách thực hiện xác thực ID phiên. Tất cả các trình xử lý lưu định nghĩa người dùng nên thực hiện xác thực ID phiên.session_destroy() must never be called together for an active session. This may sound contradictory, but this is a mandatory requirement.

session_regenerate_id () không xóa các phiên lỗi thời theo mặc định. Các phiên xác thực lỗi thời có thể có mặt để sử dụng. Các nhà phát triển phải ngăn chặn các phiên lỗi thời được tiêu thụ bởi bất kỳ ai. Họ phải cấm truy cập vào dữ liệu phiên lỗi thời bằng cách sử dụng dấu thời gian. does not delete outdated sessions by default. Obsolete authenticated sessions may be present for use. Developers must prevent outdated sessions to be consumed by anyone. They must prohibit access to obsolete session data by themselves using timestamps.

Cảnh báo

Việc loại bỏ đột ngột một phiên hoạt động tạo ra các tác dụng phụ không mong muốn. Các phiên có thể biến mất khi có các kết nối đồng thời với ứng dụng web và/hoặc mạng không ổn định.

Truy cập độc hại tiềm năng là không thể phát hiện được với việc loại bỏ các phiên hoạt động đột ngột.

Thay vì xóa các phiên lỗi thời ngay lập tức, các nhà phát triển phải đặt thời gian hết hạn ngắn hạn (dấu thời gian) trong $ _Session và cấm truy cập vào dữ liệu phiên.

Các nhà phát triển không được cấm truy cập vào dữ liệu phiên cũ ngay sau session_regenerate_id (). Nó phải được cấm ở giai đoạn sau. Ví dụ. Một vài giây sau đối với các mạng ổn định, như mạng có dây và vài phút sau cho các mạng không ổn định như điện thoại di động hoặc Wi-Fi.session_regenerate_id(). It must be prohibited at a later stage. E.g. a few seconds later for stable networks, like a wired network, and a few minutes later for unstable networks such as cell phones or Wi-Fi.

Nếu người dùng truy cập vào phiên lỗi thời (phiên hết hạn), nên từ chối truy cập vào nó. Chúng tôi cũng nên loại bỏ trạng thái xác thực khỏi tất cả các phiên của người dùng để có khả năng đại diện cho một cuộc tấn công.

Sử dụng đúng phiên.use_only_cookies và session_regenerate_id () có thể gây ra DOS cá nhân với các cookie không thể thay đổi do kẻ tấn công đặt ra. Trong trường hợp này, các nhà phát triển có thể mời người dùng xóa cookie và khuyên họ rằng họ có thể bị ảnh hưởng bởi vấn đề bảo mật. Những kẻ tấn công có thể đặt cookie độc ​​hại thông qua một ứng dụng web dễ bị tổn thương, một plugin trình duyệt lộ ra/độc ác, một thiết bị bị xâm phạm vật lý, v.v.session_regenerate_id() can cause personal DoS with undeletable cookies set by attackers. In this case, developers may invite users to remove cookies and advise them they may be affected by a security issue. Attackers may set malicious cookies via a vulnerable web application, an exposed/vicious browser plugin, a physically compromised device, etc.

Cảnh báo

Việc loại bỏ đột ngột một phiên hoạt động tạo ra các tác dụng phụ không mong muốn. Các phiên có thể biến mất khi có các kết nối đồng thời với ứng dụng web và/hoặc mạng không ổn định.

Truy cập độc hại tiềm năng là không thể phát hiện được với việc loại bỏ các phiên hoạt động đột ngột.

Thay vì xóa các phiên lỗi thời ngay lập tức, các nhà phát triển phải đặt thời gian hết hạn ngắn hạn (dấu thời gian) trong $ _Session và cấm truy cập vào dữ liệu phiên.

Các nhà phát triển không được cấm truy cập vào dữ liệu phiên cũ ngay sau session_regenerate_id (). Nó phải được cấm ở giai đoạn sau. Ví dụ. Một vài giây sau đối với các mạng ổn định, như mạng có dây và vài phút sau cho các mạng không ổn định như điện thoại di động hoặc Wi-Fi.

Nếu người dùng truy cập vào phiên lỗi thời (phiên hết hạn), nên từ chối truy cập vào nó. Chúng tôi cũng nên loại bỏ trạng thái xác thực khỏi tất cả các phiên của người dùng để có khả năng đại diện cho một cuộc tấn công.

Sử dụng đúng phiên.use_only_cookies và session_regenerate_id () có thể gây ra DOS cá nhân với các cookie không thể thay đổi do kẻ tấn công đặt ra. Trong trường hợp này, các nhà phát triển có thể mời người dùng xóa cookie và khuyên họ rằng họ có thể bị ảnh hưởng bởi vấn đề bảo mật. Những kẻ tấn công có thể đặt cookie độc ​​hại thông qua một ứng dụng web dễ bị tổn thương, một plugin trình duyệt lộ ra/độc ác, một thiết bị bị xâm phạm vật lý, v.v.

Đừng hiểu sai rủi ro dos. use_strict_mode=On là bắt buộc đối với bảo mật ID phiên chung! Tất cả các trang web được khuyến cáo để kích hoạt use_strict_mode.: Access to an obsolete session can also happen because of an unstable network and/or concurrent access to the web site. E.g the server tried to set a new session ID via a cookie, but the Set-Cookie packet may not have reached the client due to loss of connection. One connection may issue a new session ID by session_regenerate_id(), but another concurrent connection may not have received the new session ID yet. Therefore, developers must prohibit access to obsolete session at a later stage. I.e. timestamp based session management is mandatory.

DOS chỉ có thể xảy ra khi tài khoản đang bị tấn công. Một lỗ hổng tiêm JavaScript trong một ứng dụng thể hiện nguyên nhân phổ biến nhất.session_regenerate_id() nor session_destroy(), but timestamps must be used to control access to session data. Let session_gc() remove obsolete data from the session data storage.

Xóa dữ liệu phiên

Dữ liệu phiên lỗi thời phải không thể truy cập và xóa. Mô -đun phiên hiện tại không xử lý tốt điều này.

Dữ liệu phiên lỗi thời nên được xóa càng sớm càng tốt. Tuy nhiên, các phiên hoạt động không được loại bỏ ngay lập tức. Để đáp ứng các yêu cầu đó, các nhà phát triển phải tự thực hiện quản lý dữ liệu phiên dựa trên dấu thời gian.session_start().

$_SESSION['foo'] = $_POST['bar'];
0 Close the session as soon as possible after updating $_SESSION by using session_commit().

Đặt và quản lý dấu thời gian hết hạn trong $ _Session. Cấm truy cập vào dữ liệu phiên lỗi thời. Khi phát hiện ra quyền truy cập vào dữ liệu phiên lỗi thời, bạn nên xóa tất cả các trạng thái được xác thực khỏi các phiên của người dùng và buộc họ phải xác thực lại. Truy cập vào dữ liệu phiên lỗi thời có thể đại diện cho một cuộc tấn công. Để đạt được điều này, các nhà phát triển phải theo dõi tất cả các phiên hoạt động của mỗi người dùng.

Tóm lại, dữ liệu phiên không được phá hủy bằng session_regenerate_id () cũng như session_destroy (), nhưng thời gian phải được sử dụng để kiểm soát truy cập vào dữ liệu phiên. Đặt session_gc () Xóa dữ liệu lỗi thời khỏi lưu trữ dữ liệu phiên.

Phiên và khóa

Một trong những triển khai đơn giản nhất là "ID phiên có tiền tố ID người dùng" và lưu trữ thông tin cần thiết trong $ _Session. Nhiều cơ sở dữ liệu sở hữu hiệu suất tốt để chọn tiền tố chuỗi. Các nhà phát triển có thể sử dụng session_regenerate_id () và session_create_id () cho điều này.session_regenerate_id() and session_create_id() for this.

Cảnh báo

Không bao giờ sử dụng dữ liệu bí mật làm tiền tố. Nếu ID người dùng được bảo mật, hãy xem xét sử dụng Hash_HMac ().hash_hmac().

Cảnh báo

Không bao giờ sử dụng dữ liệu bí mật làm tiền tố. Nếu ID người dùng được bảo mật, hãy xem xét sử dụng Hash_HMac ().

Bật phiên.use_strict_mode là bắt buộc cho thiết lập này. Đảm bảo nó được bật. Nếu không, cơ sở dữ liệu phiên hoạt động có thể bị xâm phạm.

Quản lý phiên dựa trên dấu thời gian là bắt buộc để phát hiện quyền truy cập vào các phiên lỗi thời. Khi được phát hiện truy cập vào phiên lỗi thời, các cờ xác thực nên được xóa khỏi tất cả các phiên hoạt động của người dùng. Điều này ngăn chặn những kẻ tấn công để tiếp tục khai thác các phiên bị đánh cắp.

Phiên và tự động login

Các nhà phát triển không được sử dụng ID phiên cuộc sống dài cho tự động login vì nó làm tăng nguy cơ bị đánh cắp. Một tính năng tự động login nên được thực hiện bởi nhà phát triển.setcookie(). Use a secure hash stronger than SHA-2. E.g. SHA-256 or greater with random data from random_bytes() or /dev/urandom.

Sử dụng khóa băm một lần an toàn làm khóa tự động-login bằng setCookie (). Sử dụng hàm băm an toàn mạnh hơn SHA-2. Ví dụ. SHA-256 hoặc lớn hơn với dữ liệu ngẫu nhiên từ Random_Bytes () hoặc /dev /urandom.

Nếu người dùng không được xác thực, hãy kiểm tra xem khóa tự động login một lần có hợp lệ hay không. Trong trường hợp nó hợp lệ, xác thực người dùng và đặt khóa băm một lần an toàn mới. Một khóa tự động login chỉ phải được sử dụng một lần, tức là không bao giờ sử dụng lại khóa tự động login, luôn tạo ra một khóa mới.

Khóa tự động login là khóa xác thực cuộc sống lâu dài, nó cần được bảo vệ càng nhiều càng tốt. Sử dụng các thuộc tính cookie Path/Httponly/Secure/Samesite để bảo mật nó. I E. Không bao giờ truyền phím tự động login trừ khi cần thiết.

CSRF (các cuộc tấn công của CSRF (yêu cầu chéo trang)

Phiên và xác thực không bảo vệ chống lại các cuộc tấn công CSRF. Các nhà phát triển phải tự thực hiện bảo vệ CSRF. can be used for CSRF protection. Refer to the manual page for more details.

OUTPUT_ADD_REWRITE_VAR () có thể được sử dụng để bảo vệ CSRF. Tham khảo trang hướng dẫn để biết thêm chi tiết.: PHP prior to 7.2.0 uses the same output buffer and INI setting as trans sid. Therefore, use of output_add_rewrite_var() with PHP prior to version 7.2.0 is not advised.

Lưu ý: PHP trước 7.2.0 sử dụng cùng một bộ đệm đầu ra và cài đặt INI làm trans sid. Do đó, việc sử dụng output_add_rewrite_var () với PHP trước phiên bản 7.2.0 không được khuyến khích.

Hầu hết các khung ứng dụng web hỗ trợ bảo vệ CSRF. Tham khảo Hướng dẫn sử dụng khung ứng dụng web để biết thêm chi tiết.

Kể từ Php 7.3, thuộc tính Samesite cho cookie phiên có thể được đặt. Đây là một biện pháp bổ sung có thể giảm thiểu các lỗ hổng CSRF.

Dữ liệu phiên có thể được thao tác không?

Có, phiên có thể được thao tác bởi phía máy khách người dùng, trước hết tôi đề nghị bạn sử dụng HTTPS và không HTTP. Tiếp theo bạn có thể sử dụng mã thông báo với thời gian giới hạn cho mỗi thao tác bạn thực hiện., first of all i suggest you to use HTTPS and not HTTP. Next you can use tokens with a limit time for each operation you do.

Dữ liệu phiên PHP có thể bị hack không?

Dữ liệu phiên được lưu trữ trên máy chủ và ID phiên được sử dụng để tham chiếu dữ liệu này cho mỗi yêu cầu.Php sessionID được coi là an toàn. Điều này đã cho những kẻ tấn công có thể ăn cắp phiên cho người dùng khác.The PHP sessionid is considered secure. This made it possible for attackers to steal sessions for other users.

Các biến phiên có thể được sửa đổi?

Các biến phiên trên máy khách chỉ đọc.Họ không thể được sửa đổi.Để thay đổi giá trị của biến phiên, yêu cầu gọi lại AJAX.Tương tự, nếu một biến phiên thay đổi trên máy chủ, nó sẽ không được cập nhật trên máy khách cho đến khi gọi lại AJAX từ máy khách.They cannot be modified. In order to change the value of a session variable, an Ajax Callback is required. Similarly, if a session variable changes on the server, it will not be updated on the client until an Ajax Callback is made from the client.

Phiên có an toàn PHP không?

“Phiên Php có an toàn không?Các phiên PHP chỉ an toàn như ứng dụng của bạn làm cho chúng.Các phiên PHP sẽ cho phép khách hàng một chuỗi giả danh (ID phiên phiên) để họ tự phân biệt, nhưng không có khả năng chuỗi bị chặn bởi kẻ tấn công, kẻ xâm lược có thể tưởng tượng là máy khách đó.PHP sessions are only as secure as your application makes them. PHP sessions will allow the client a pseudorandom string (“session ID”) for them to distinguish themselves with, but on the off chance that the string is intercepted by an attacker, the aggressor can imagine to be that client.