Hướng dẫn how do you use sessions to provide security in a php page explain - làm cách nào để bạn sử dụng phiên để cung cấp bảo mật trong trang php giải thích

Hướng dẫn how do you use sessions to provide security in a php page explain - làm cách nào để bạn sử dụng phiên để cung cấp bảo mật trong trang php giải thích

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.

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 và trạng thái

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ể.

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.

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.

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

Cloudways cung cấp 2FA, SSL miễn phí và các tính năng bảo mật nâng cao hơn trên các máy chủ được quản lý để giữ cho ứng dụng của bạn an toàn.

Phiên PHP

PHP như một ngôn ngữ lập trình web thuộc về lớp ứng dụng. PHP xây dựng trên cookie HTTP để cung cấp một cơ chế để duy trì ngữ cảnh qua nhiều yêu cầu. Đối với điều này, nó kết hợp tiêu đề cookie cụ thể, tùy chỉnh với lớp xử lý phiên riêng:

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.
  • Dự đoán phiên-Trong loại tấn công này, kẻ tấn công thường sẽ có một số kiến ​​thức về cách ứng dụng tạo ID phiên và sau đó sẽ cố gắng đoán các ID người dùng khác sử dụng cùng một phương thức. Đây là nơi mà sự ngẫu nhiên của thế hệ ID-S đóng vai trò lớn. – 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.

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?

Khi kẻ tấn công có được quyền truy cập vào phiên thuộc về người dùng hợp pháp, máy chủ sẽ cấp cho anh ta tất cả quyền lực mà người dùng ban đầu có. Như vậy, ID phiên có thể được ví như một chìa khóa cấp cho chủ sở hữu của nó truy cập vào nhà, bất kể anh ta có phải là chủ sở hữu nhà hay không.

Cuộc tấn công này thường sẽ tập trung vào người dùng & phiên có quyền truy cập hành chính, vì vậy trong những trường hợp đó, kẻ tấn công sẽ có được quyền hành chính trên trang web bị xâm phạm.

Trước khi tiếp tục các biện pháp khác nhau, chúng tôi có thể thực hiện để ngăn chặn các phiên của chúng tôi bị khai thác bởi những kẻ tấn công, điều quan trọng là phải nói rằng các lỗ hổng liên quan đến các phiên PHP không phải là một thứ cụ thể cho chính ngôn ngữ. Chúng không phải là một lỗ hổng vốn có của PHP - các công nghệ khác đòi hỏi các biện pháp tương tự để giảm thiểu các vectơ tấn công tương tự này.

Vì vậy, các biện pháp thông thường mà chúng ta có thể thực hiện để giảm thiểu các cuộc tấn công tấn công phiên?

  • Tấn công XSS (kịch bản chéo trang)-Giảm thiểu đối với loại tấn công này không phải là phiên cụ thể. Trang web cần ngăn chặn bất kỳ loại đầu vào người dùng nào được thực thi trong trình duyệt của khách truy cập. Điều này đơn giản có nghĩa là bất kỳ đầu vào người dùng, thông qua các biểu mẫu hoặc nhận các tham số hoặc các nhu cầu khác phải được vệ sinh trước khi sử dụng. Đây là một biện pháp bảo mật chung cho các ứng dụng web, cho các loại tấn công này và các loại tấn công khác (ví dụ: SQL Injection). Hai hàm chính trong PHP được sử dụng để vệ sinh các chuỗi là htmlspecialchars () và dải_tags (). htmlspecialchars () chuyển đổi các ký tự đặc biệt thành các thực thể HTML và Strip_tags () sẽ chỉ cần xóa tất cả các thẻ HTML, bao gồm cả thẻ. lần đầu tiên được triển khai trong Internet Explorer 6 hiện tại, sau này được các trình duyệt khác áp dụng. session.cookie_httponly cờ thêm một hướng dẫn cho trình duyệt không cho phép JavaScript phía máy khách truy cập cookie: nó sẽ thêm một hướng dẫn httponly tùy chọn để đặt tiêu đề phản hồi-cookie. – 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

Sự kết luận

Phiên Phiên bảo mật là một mối quan tâm đang diễn ra. Các ứng dụng web PHP (như WordPress hoặc Laravel Framework) thường tìm thấy các phiên PHP gốc không đủ hoặc không an toàn cho nhu cầu của họ và chọn đưa ra các giải pháp hoàn toàn tùy chỉnh và từ bỏ các phiên PHP, trong khi các phiên khác như Zend Framework, chọn xây dựng các giải pháp tùy chỉnh trên đầu của các phiên bản địa PHP. Bất cứ con đường nào chúng ta chọn, điều quan trọng là phải nhận thức được tất cả các mối quan tâm về hiệu suất bảo mật và PHP.

Trong bài viết này, chúng tôi đã đề cập đến một số mối quan tâm bảo mật phiên PHP cơ bản mà chúng tôi cần ghi nhớ và thực hành bảo mật PHP tốt nhất. Do đó, nó là một cái nhìn tổng quan hơn là một danh sách đầy đủ của tất cả các cảnh báo, vì vậy chúng tôi khuyến khích độc giả cũng thực hiện nghiên cứu của riêng họ khi nói đến Phiên Phiên & Bảo mật Cookie.

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

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

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

Hướng dẫn how do you use sessions to provide security in a php page explain - làm cách nào để bạn sử dụng phiên để cung cấp bảo mật trong trang php giải thích

“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).

PHP bảo mật phiên là gì?

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

Làm thế nào chúng ta có thể sử dụng phiên trong PHP?

Phiên Php được sử dụng để lưu trữ và truyền thông tin từ trang này sang trang khác tạm thời (cho đến khi người dùng đóng trang web).Kỹ thuật phiên PHP được sử dụng rộng rãi trong các trang web mua sắm, nơi chúng tôi cần lưu trữ và truyền thông tin giỏ hàng, ví dụ:Tên người dùng, mã sản phẩm, tên sản phẩm, giá sản phẩm, vv từ trang này sang trang khác.to store and pass information from one page to another temporarily (until user close the website). PHP session technique is widely used in shopping websites where we need to store and pass cart information e.g. username, product code, product name, product price etc from one page to another.

Làm cách nào để làm cho các phiên an toàn?

Thực tiễn tốt nhất để xác thực phiên Dữ liệu phải là một chuỗi các ký tự ngẫu nhiên mà không có bất kỳ ý nghĩa nào.HTTPS Truyền thông- HTTPS nên được sử dụng cho tất cả các ứng dụng dựa trên phiên.Cookie cookie an toàn và cookie httponly- phiên nên được tạo với các thuộc tính an toàn và httponly.The data should be a random string of characters without any meaning. HTTPS communication- HTTPS should be used for all session-based applications. Secure and HTTPonly cookies- Session cookies should be created with secure and HttpOnly attributes.

Phiên đăng nhập được bảo mật như thế nào?

Các phiên PHP chỉ an toàn vì ứng dụng của bạn làm cho chúng.Các phiên PHP sẽ cung cấp cho người dùng chuỗi giả và chuỗi giả ("ID phiên") để họ tự nhận mình, nhưng nếu chuỗi đó bị kẻ tấn công chặn, kẻ tấn công có thể giả vờ là người dùng đó.only secure as your application makes them. PHP sessions will give the user a pseudorandom string ("session ID") for them to identify themselves with, but if that string is intercepted by an attacker, the attacker can pretend to be that user.