Hướng dẫn are sessions secure php? - các phiên có an toàn php không?

Hướng dẫn are sessions secure php? - các phiên có an toàn php không?

Nội phân Chính showShow

  • HTTP và trạng thái
  • Giữ an toàn cho các ứng dụng của bạn trên đám mây
  • Phiên PHP
  • Sử dụng các phiên trong PHP
  • Các vấn đề bảo mật phiên PHP
  • Một cuộc tấn công tấn công vụ tấn công là gì?
  • Các loại tấn công tấn công vụ tấn công
  • Kẻ tấn công có thể làm gì với một phiên đã bị tấn công thành công?
  • Phiên Phiên thực hành tốt nhất và tầm quan trọng của Phiên Php.Cookie_Secure FLAG
  • Cải thiện tốc độ ứng dụng PHP của bạn thêm 300%
  • “Phiên Php có an toàn không?
  • Phiên Php có thể bị hack không? ”
  • Phiên Php có an toàn không?
  • Phiên Php có thể bị hack không?
  • Những thực hành tốt nhất để quản lý phiên bảo đảm là gì?
  • Làm thế nào để bạn sử dụng các phiên để cung cấp bảo mật trong một trang PHP giải thích?

Nội phân chính

  • HTTP và trạng thái
  • Giữ an toàn cho các ứng dụng của bạn trên đám mây
  • Phiên PHP
  • Sử dụng các phiên trong PHP
  • Các vấn đề bảo mật phiên PHP
  • Một cuộc tấn công tấn công vụ tấn công là gì?
  • Các loại tấn công tấn công vụ tấn công
  • Kẻ tấn công có thể làm gì với một phiên đã bị tấn công thành công?
  • Phiên Phiên thực hành tốt nhất và tầm quan trọng của Phiên Php.Cookie_Secure FLAG
  • Cải thiện tốc độ ứng dụng PHP của bạn thêm 300%
  • “Phiên Php có an toàn không?
  • Phiên Php có thể bị hack không? ”
  • Phiên Php có an toàn không?
  • Phiên Php có an toàn không?
  • Phiên Php có thể bị hack không?
  • Những thực hành tốt nhất để quản lý phiên bảo đảm là gì?
  • Làm thế nào để bạn sử dụng các phiên để cung cấp bảo mật trong một trang PHP giải thích?

Nội phân chính

Chia sẻ bài viết này

Giao thức chuyển siêu văn bản bắt đầu như một giao thức không trạng thái. Điều này có nghĩa là mọi yêu cầu đối với máy chủ đều khép kín, nó mang tất cả bối cảnh mà máy chủ cần phục vụ trang web được yêu cầu. Mỗi thông báo mà máy khách gửi đến máy chủ đều có thể được tự xử lý - máy chủ không duy trì trạng thái, cũng như thông tin về kết nối.

Các ứng dụng web cần một cách để duy trì bối cảnh về khách truy cập-từ danh tính người dùng đã đăng nhập, giỏ hàng trong các cửa hàng thương mại điện tử, đến dữ liệu lâu dài như lịch sử mua hàng hoặc lịch sử trò chuyện trong các ứng dụng mạng xã hội.

Đây là lý do tại sao nó cần thiết cho HTTP và tất cả các ứng dụng được xây dựng trên đỉnh của nó, để tìm các giải pháp để quản lý tính không quốc tịch vốn có này trong HTTP. Giải pháp chính là cookie.

HTTP và trạng thái

PHP có thể là ngôn ngữ lập trình được sử dụng nhiều nhất cho web (W3Tech cung cấp cho nó gần 80%) và nó có giải pháp riêng cho các phiên này - PHP. Trong bài viết này, chúng tôi sẽ mô tả các cơ chế phiên PHP, chúng tôi sẽ khám phá bảo mật phiên PHP và cách bảo mật cookie phiên PHP.

Chúng ta sẽ thấy những lỗ hổng tiềm năng là gì và thực tiễn bảo mật phiên PHP là gì.

HTTP đã được mở rộng thông qua các tiêu đề của nó từ những ngày đầu. Điều này có nghĩa là chức năng có thể được thêm vào các yêu cầu và phản hồi HTTP thông qua các tiêu đề có thể xác định được người dùng.

Tiêu đề là các trường trong mọi yêu cầu và phản hồi có thể chứa các phần siêu dữ liệu khác nhau.

Cookies đã được công bố như là một bổ sung cho tiêu chuẩn HTTP của IETF vào năm 1997, và đặc điểm kỹ thuật đã được nâng cao kể từ đó cuối cùng được xác định trong RFC 6265, có tiêu đề Cơ chế quản lý trạng thái HTTP.

Cookie được định nghĩa bởi IETF là một cơ chế bao gồm các trường tiêu đề HTTP có thể được sử dụng bởi các máy chủ để lưu trữ các phần dữ liệu (trạng thái) trong các máy khách HTTP. Điều này giúp máy chủ có thể giữ một bối cảnh trạng thái, được gọi là phiên, trên nhiều yêu cầu HTTP.

Trình duyệt của người dùng (máy khách) sau đó gửi lại các cookie này đến máy chủ theo các yêu cầu tiếp theo, giúp máy chủ có thể xây dựng lại các trạng thái, chẳng hạn như hành trình của người mua, giỏ hàng hoặc tài khoản truyền thông xã hội.

Chúng ta có thể phân biệt giữa cookie phiên và cookie dai dẳng. Cookie phiên là thoáng qua - chúng chỉ kéo dài trong suốt thời gian của phiên trình duyệt cụ thể đó. Họ sống trong bộ nhớ trình duyệt. Bởi vì chúng hết hạn khi phiên bản trình duyệt hiện tại bị tắt, họ không có ngày hết hạn.

Cookie dai dẳng có ngày hết hạn, chúng có nghĩa là kéo dài trong một khoảng thời gian cụ thể.

Giữ an toàn cho các ứng dụng của bạn trên đám mây

Chúng được sử dụng cho những thứ như cá nhân hóa trải nghiệm người dùng, quản lý phiên - bao gồm người dùng đã đăng nhập / đăng xuất trạng thái, xe đẩy và để theo dõi hành vi của người dùng.

Phiên PHP

Cookie thường lưu trữ một lượng dữ liệu rất hạn chế (tối đa là 4096 byte cho mỗi trang web) và chúng được lưu trữ trên các máy của khách truy cập. Điều này làm cho cookie hạn chế và không an toàn - không đủ để cung cấp cho các nhu cầu phiên của các trang web hiện đại.

SessionHandler implements SessionHandlerInterface , SessionIdInterface {
/* Methods */
public close ( ) : bool
public create_sid ( ) : string
public destroy ( string $id ) : bool
public gc ( int $max_lifetime ) : int|bool
public open ( string $path , string $name ) : bool
public read ( string $id ) : string
public write ( string $id , string $data ) : bool
}

Cơ chế này có thể được mở rộng hoặc viết lại hoàn toàn bằng cách kế thừa lớp sessionHandler hoặc bằng cách triển khai sessionHandlerInterface.

Trong PHP, các phiên mặc định vẫn tồn tại dưới dạng các tệp trên máy chủ. Các tập tin mang tên của ID phiên tương ứng của họ. Khi phiên được bắt đầu, PHP sẽ đặt cookie phpsessid với ID phiên. Sau đó, khi trình duyệt của khách truy cập trả về cookie đó trên mỗi yêu cầu, máy chủ liên kết dữ liệu phiên trong tệp liên quan đến phiên đó. Kết quả là trạng thái phiên liên tục trên nhiều trang trên một trang web.

Sử dụng các phiên trong PHP

Một phiên trong PHP có thể được bắt đầu bằng một cuộc gọi đến một hàm session_start (). Chức năng này bắt đầu một phiên mới hoặc khôi phục một phiên hiện có được chuyển đến máy chủ trong cookie hoặc trong POST hoặc nhận các tham số yêu cầu. $ _Session Superglobal mảng sau đó được sử dụng để đặt hoặc để có các biến trong một phiên.session_start() . This function either starts a new session, or restores an existing session passed to the server in a cookie, or in POST or GET request parameters. $_SESSION superglobal array is then used to set or to get variables in a session.

Nếu sau đó chúng tôi muốn sử dụng các biến phiên trên các trang khác của cùng một trang web, một tài liệu PHP khác cần sử dụng session_start (). Điều này sẽ tạo ra các biến $ _Session, có thể đã được đặt trên các trang/tài liệu web khác, có sẵn trên bộ hiện tại.$_SESSION variables, which may have been set on other web pages/documents, available on the current one.

session_close () cam kết các thay đổi thành $ _session đối với đĩa commits the changes to $_SESSION to the disk

Chức năng session_destroy () sẽ phá hủy tất cả dữ liệu phiên. Để loại bỏ hoàn toàn phiên, cũng cần phải tháo ID phiên và xóa rõ ràng cookie phiên. Ngoài những điều cơ bản này, PHP còn có một loạt các chức năng khác để xử lý phiên. function will destroy all the session data. To fully remove the session, it is also necessary to unset the session ID, and explicitly delete the session cookie. Beyond these basics, PHP has a host of other functions for session handling .

Chức năng mà các phiên PHP cố gắng cung cấp - dữ liệu liên tục trong các lượt truy cập vào các trang của một trang web - là không thể thiếu đối với các trang web hiện đại. Tuy nhiên, việc thực hiện Phiên PHP là một điểm tranh chấp.

Do dữ liệu phiên trong PHP được ghi vào một tệp trên máy chủ theo mặc định và tệp bị khóa trong quá trình thực thi tập lệnh, điều này có thể đưa ra các thách thức về hiệu suất và tỷ lệ.

Các phiên PHP cũng đưa ra những thách thức đối với cơ chế bộ nhớ đệm thông thường - các trang lưu trữ với bộ cookie phpsessid có thể làm tổn hại nghiêm trọng trang web trong khi bỏ qua bộ đệm cho các trang có phpsessid có nghĩa là bỏ qua bộ đệm trên toàn bộ trang web.PHPSESSID would mean bypassing cache on the entire website.

Và sau đó, có những vấn đề bảo mật.

Các vấn đề bảo mật phiên PHP

Phiên PHP là một bước tiến liên quan đến bảo mật so với một hệ thống nơi tất cả dữ liệu phiên được lưu trữ trong cookie. Phpsessid cookie chỉ lưu trữ ID tham chiếu cho một tệp phiên sống trên máy chủ.

Cài đặt mặc định PHP cho một đường dẫn để lưu các tệp phiên mà chúng ta có thể tìm thấy trong các tệp cấu hình php.ini là session.save_path = Hồi/tmp. Điều này có nghĩa là các tệp phiên có thể bị ảnh hưởng một cách hiệu quả bởi những người dùng khác.session.save_path = “/tmp” . This means that session files could effectively get compromised by other users.

Vấn đề này đặc biệt đáng báo động khi chúng tôi nhớ lại rằng phần lớn các trang web do PHP cung cấp trực tiếp trên các máy chủ được chia sẻ với nhiều người thuê.

Phổ biến nhất trong tất cả các khai thác phiên là vụ cướp phiên.

Một cuộc tấn công tấn công vụ tấn công là gì?

Trụ tội xảy ra khi một bên độc hại có quyền truy cập bất hợp pháp vào phiên khác của người dùng. Kẻ tấn công trước tiên sẽ có được ID phiên thuộc về người dùng khác. Sau đó, anh ta sẽ sử dụng ID này để có quyền truy cập đầy đủ vào phiên khác của người dùng. ID phiên là đủ để máy chủ cung cấp quyền truy cập vào tài khoản tương ứng.

Về mặt lý thuyết, ID phiên có thể thu được bằng cách dự đoán hoặc đoán (lực lượng vũ phu), nhưng cách có khả năng nhất là ID phiên bị đánh cắp. Cả hai cuộc tấn công vũ lực, hoặc dự đoán ID sẽ ít xảy ra hơn nhiều.

Có một số vectơ mà kẻ tấn công có thể truy cập vào ID phiên của người dùng.

Các loại tấn công tấn công vụ tấn công

Tiết kiệm phiên có thể xảy ra theo nhiều cách khác nhau - ở đây chúng tôi chỉ đề cập đến những người khét tiếng hơn:

  • XSS hoặc kịch bản chéo trang-Đây là một cuộc tấn công xảy ra khi một bên thứ ba thành công để đưa JavaScript vào cơ thể của một trang web được nạn nhân truy cập. Hãy nói rằng, một trang web XY sử dụng các biến GET và không vệ sinh đúng cách chúng. Kẻ tấn công có thể sử dụng JavaScript trong một yêu cầu GET và đưa nó vào phần thân của trang web, đạt được mức độ truy cập tương tự như trang web của chính JavaScript. Ví dụ, nó có thể nhận được nội dung của cookie phpsessid, và sau đó gửi nó cho kẻ tấn công. – this is an attack that happens when a third party succeeds to inject javascript into the body of a website visited by the victim. Let’s say that a website XY uses GET variables, and does not properly sanitize them.An attacker can use javascript in a GET request and get it injected into the body of a web page, gaining the same level of access as the website’s own javascript. For example, it can get the content of the PHPSESSID cookie, and then send it to the attacker.
  • Phiên Sidejacking - Loại tấn công này xảy ra với người đàn ông trong vector tấn công giữa - trong các tình huống khi kẻ tấn công được định vị giữa nguồn và đích đến của giao thông. Kẻ tấn công sẽ lắng nghe các yêu cầu và phản hồi, và, trừ khi lưu lượng truy cập được mã hóa, anh ta có thể nắm bắt ID phiên. – this type of attack happens with Man In The Middle attack vector – in situations when the attacker is positioned between the source and the destination of the traffic. The attacker will listen to requests and responses, and, unless the traffic is encrypted, he can capture the Session ID.
  • Việc cố định phiên xảy ra với các ứng dụng web dễ bị tổn thương, mà không cần phải đặt ID phiên mới khi xác thực người dùng, nhưng thay vào đó chấp nhận ID phiên hiện có khi nó tồn tại. Trong loại tấn công này, kẻ tấn công sẽ tạo ra một ID phiên hợp lệ nhưng không sử dụng, và sau đó, thông qua các sơ đồ khác nhau, làm cho người dùng hợp lệ xác thực bằng ID đó. Sau đó, việc sở hữu ID người dùng được xác thực, kẻ tấn công có quyền truy cập vào phiên của người dùng. happens with vulnerable web applications, which don’t insist on always setting a new Session ID upon user authentication, but instead accept an existing Session ID when it exists. In this type of attack, the attacker will forge a valid, but unused Session ID, and then, through various schemes, make a valid user authenticate using that ID. After that, having possession of the authenticated user’s ID, the attacker gains access to the user’s session.
  • Session Prediction – in this type of attack, the attacker will usually have some knowledge of how the application generates Session ID-s, and will then try to guess other user’s IDs using the same method. This is where the randomness of Session ID-s generation plays a big role.

What Can An Attacker Do With a Session That Was Successfully Hijacked?

Once an attacker gains access to the session that belongs to a legitimate user, the server will grant him all authority that the original user has. As such, the Session ID can be likened to a key that grants its owner access to the house, regardless if he was the house owner or not.

This attack will often be focused on users & sessions with administrative access, so in those cases, the attacker will gain administrative rights on the compromised website.

Before continuing to different measures we can take to prevent our sessions from being exploited by attackers, it is important to say that vulnerabilities connected to PHP sessions are not something specific to the language itself. They are not an inherent flaw of PHP – other technologies require similar measures to mitigate these same vectors of attack.

So what are common-sense measures we can take to mitigate Session hijacking attacks?

  • XSS (Cross-Site Scripting) Attack – mitigation against this type of attack is not sessions-specific. The website needs to prevent any kind of user input from being executed in the visitor’s browser. This simply means that any user input, through forms or GET parameters, or other needs to be sanitized before it is used. This is a general security measure for web applications, for this and other types of attacks (e.g., SQL injection). The main two functions in PHP used to sanitize strings are htmlspecialchars() and strip_tags(). htmlspecialchars() converts special characters into html entities, and strip_tags() will simply remove all the HTML tags, including

Bạn có thêm cái gì nữa không? Hãy cho chúng tôi biết trong các ý kiến.

“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 đó.

Phiên Php có thể bị hack không? ”

Các phiên không phải là máy chủ, chúng được đặt trên máy khách địa phương mà bạn có thể đi trong các món ăn của bạn và khám phá một cookie có tên PHPSSID bên dưới tên miền của bạn. Vâng, chúng có thể bị hack, và điều này có thể là một chiến lược thực sự phổ biến về hack

Chia sẻ ý kiến ​​của bạn trong phần bình luận. Nhận xét ngay bây giờ COMMENT NOW

Đánh giá của khách hàng tại

“Couldways Hosting có một trong những dịch vụ khách hàng tốt nhất và tốc độ lưu trữ”

Sanjit C [Nhà phát triển trang web]

Tonino Jankov

Tonino là một doanh nhân, người đam mê OSS và nhà văn kỹ thuật. Ông có hơn một thập kỷ kinh nghiệm trong phát triển phần mềm và quản lý máy chủ. Khi anh ấy không đọc nhật ký lỗi, anh ấy thích đọc truyện tranh hoặc khám phá những cảnh quan mới (thường là trên hai bánh xe).

Phiên Php có an toàn 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.

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.

Những thực hành tốt nhất để quản lý phiên bảo đảm là gì?

Quản lý phiên Thực tiễn tốt nhất Theo OWASP đảm bảo rằng thời gian chờ không hoạt động của phiên càng ngắn càng tốt, nên thời gian chờ của hoạt động phiên nên ít hơn vài giờ. Tạo một định danh phiên mới khi người dùng xác thực lại hoặc mở phiên trình duyệt mới.Ensure that session inactivity timeout is as short as possible, it is recommended that the timeout of the session activity should be less than several hours. Generate a new session identifier when a user re-authenticates or opens a new browser session.

Làm thế nào để bạn sử dụng các phiên để cung cấp bảo mật trong một trang PHP giải thích?

Có một vài điều cần làm để giữ an toàn phiên của bạn:..

Sử dụng SSL khi xác thực người dùng hoặc thực hiện các hoạt động nhạy cảm ..

Tái tạo ID phiên bất cứ khi nào mức bảo mật thay đổi (chẳng hạn như đăng nhập). ....

Có thời gian ra ngoài ..

Không sử dụng đăng ký toàn cầu ..

Lưu trữ chi tiết xác thực trên máy chủ ..