Hướng dẫn how to secure _get request in php - cách bảo mật yêu cầu _get trong php
Cách tốt nhất để đảm bảo yêu cầu nhận hoặc có bất kỳ, các lựa chọn thay thế an toàn hơn? Show
Tôi đang sử dụng một vài yêu cầu GET trong trang web của mình để tạo các trang web một cách linh hoạt và xóa các bản ghi dựa trên ID. Người cuối cùng làm tôi lo lắng một chút, bởi vì mọi người chỉ có thể thay đổi URL thành bất kỳ tệp nào họ muốn xóa. Để có quyền truy cập vào tệp xóa, họ cần phải đăng nhập và có một số quyền nhất định, điều này sẽ gây ra lỗi nếu họ không có đủ quyền. Tôi đã bắt gặp một bài đăng thực sự cũ, nói rằng bạn nên sử dụng chức năng Tôi cũng đọc về xác thực thực sự quan trọng, vì vậy tôi đã suy nghĩ về việc kiểm tra xem ID có phải là số nguyên thực tế hay không. Có một bài đăng khác nói rằng việc ẩn yêu cầu trong URL về cơ bản là vô dụng, vì yêu cầu sẽ luôn là một phần của URL. Đây là tệp xóa của tôi, nó sử dụng hai câu lệnh, một câu xóa bài đăng thực tế và bản còn lại xóa các hình ảnh liên quan với bài đăng đó.
Trong bài viết này, chúng tôi sẽ đề cập đến hai phương thức yêu cầu: các phương thức GET và POST, để gửi và nhận dữ liệu từ biểu mẫu HTML bằng PHP. Ngoài ra, chúng tôi sẽ kiểm tra các vấn đề phổ biến nhất liên quan đến bảo mật thông tin, chẳng hạn như kịch bản chéo trang (XSS) và tiêm SQL, và cách giải quyết chúng với sự khử trùng đầy đủ. Hãy bắt đầu với lý thuyết: những gì nhận được và đăng yêu cầu, và chúng khác nhau như thế nào? - Nếu bạn muốn, bạn có thể bỏ qua phần tiếp theo, nơi chúng tôi sẽ bắt đầu với việc thực hành. Hiểu các phương pháp GET và POSTGiao thức chuyển siêu văn bản (HTTP) được phát triển như một giao thức để phục vụ việc truyền tài liệu và hoạt động như một trung gian giữa các trình duyệt Internet và máy chủ web. Bạn đã quen với việc đọc nó trong các địa chỉ của các trang web - cũng như anh em của nó, HTTPS, một phiên bản được mã hóa an toàn hơn (do đó là S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S). Nói cách khác, HTTP là một giao thức phục vụ như một cây cầu trên mạng: nó thu thập một yêu cầu từ trình duyệt Internet; gửi nó đến máy chủ; chờ đợi một câu trả lời; Và cuối cùng, nó trả lại thông tin mới cho trình duyệt. Nói chung, các yêu cầu này giữ một số siêu dữ liệu trong tiêu đề của họ, có chứa các thông báo được sử dụng để thực hiện một số hành vi nhất định trên máy khách hoặc trên máy chủ. Ngoài ra, các yêu cầu HTTP có thể giả sử các mô hình khác nhau. Các loại yêu cầu HTTP được sử dụng nhiều nhất là nhận và đăng, nhưng có các loại khác trong đặc tả kỹ thuật của chúng, chẳng hạn như 0 và 1. Đối với các mục đích của bài viết này, chúng tôi sẽ chỉ tập trung vào hai phổ biến nhất.Yêu cầu nhậnPhương thức Get yêu cầu được sử dụng khi bạn muốn lấy dữ liệu từ một nguồn hoặc tài nguyên cụ thể. Nó chỉ nên được sử dụng để truy xuất dữ liệu, vì chuỗi truy vấn của nó được gửi và hiển thị tại URL, ví dụ: 2.Khi chúng tôi chèn URL này vào trình duyệt, chúng tôi đang yêu cầu máy chủ YouTube cho một tài nguyên cụ thể: để lấy dữ liệu từ video 3 được xác định là 4. Ngay khi máy chủ trả về yêu cầu, giao thức HTTP sẽ cho trình duyệt biết cách hiển thị video, trong ví dụ này, video chính thức cho bài hát Boh Bohemian Rhapsody, bởi ban nhạc của Nữ hoàng Anh.Lưu ý rằng trong ví dụ của chúng tôi, tham số thứ hai của yêu cầu GET, tham số 5, thông báo thời gian bắt đầu mà chúng tôi mong đợi trong phản hồi của chúng tôi, trong trường hợp này, từ 3 phút và 5S. Các tham số 3 và 5 được phân tách bằng ký tự 8, chỉ ra giao thức HTTP trong đó các cặp giá trị khóa-khóa của các tham số này bắt đầu và kết thúc. Vì vậy, máy chủ biết chính xác rằng bạn tìm kiếm video 9 tại thời điểm 0.Nhận các yêu cầu thường bị giới hạn về chiều dài - đối với hầu hết các trình duyệt, nó lên tới 8 kb hoặc 8192 byte trong URI - và vì chúng chỉ phục vụ để yêu cầu dữ liệu, chúng không thể sửa đổi nó. Ngoài ra, chúng có thể được lưu trữ trong bộ đệm, trong lịch sử của trình duyệt và cả trong các dấu trang. Đó là lý do tại sao bạn không bao giờ nên sử dụng nó để gửi dữ liệu nhạy cảm, chẳng hạn như số an sinh xã hội và mật khẩu người dùng.never use it to send sensitive data, such as Social Security Numbers and user passwords.
Yêu cầu bài viếtPhương thức yêu cầu POST được sử dụng để gửi dữ liệu đến máy chủ, để cập nhật hoặc tạo tài nguyên mới. Không giống như phương thức GET, phương thức POST không hiển thị thông tin tại địa chỉ URL. Trong trường hợp này, dữ liệu được truyền trong thân yêu cầu HTTP, như sau:
Trong ví dụ này, chúng tôi đang thông báo cho máy chủ 1 rằng chúng tôi sẽ thực hiện yêu cầu phương thức 2 đến địa chỉ 3, sử dụng các thông số kỹ thuật của giao thức 4. Chúng tôi cũng chỉ ra rằng có 42 thông tin ký tự ( 5), theo định dạng nội dung 6 tiêu chuẩn, có giá trị là 7. Cuối cùng, thông tin của chúng tôi nằm ở dòng dưới cùng, chứa 3 tham số: 8, 9 và 3.
Giả sử máy chủ YouTube đã nhận ra yêu cầu của chúng tôi và địa chỉ này là hợp lệ. Trong ví dụ của chúng tôi, video được thông báo mà chúng tôi nhận được trước đó, sẽ được thêm vào danh sách phát 1 của người dùng được xác định là 2.Lưu ý rằng đây là một yêu cầu một lần, không có khả năng được lặp lại. Theo quy định, phương thức POST, không giống như GET, không được lưu trữ trong bộ đệm hoặc trong lịch sử trình duyệt của khách hàng, cũng như không thể lưu trong các dấu trang. Các yêu cầu POST không có hạn chế về kích thước của tin nhắn, cho phép chúng tôi gửi các bài viết hoàn chỉnh, chẳng hạn như bài viết này, thông qua mẫu HTML điện tử chẳng hạn. Ngoài ra, phương pháp POST hỗ trợ nhiều loại 6, bao gồm các tài liệu nhị phân, chuỗi và số.
Tạo các biểu mẫu với HTML và PHPBây giờ chúng tôi đã hiểu cách các phương thức GET và POST hoạt động trong lý thuyết, chúng ta hãy đi đến các thực tiễn: Hãy tạo biểu mẫu HTML và để gửi và nhận thông tin bằng PHP.
Chèn biểu mẫu trên trangBước đầu tiên để tạo trang web của chúng tôi là thông báo cấu trúc của phần tử 4 sẽ chứa các trường nơi người dùng nhập dữ liệu, như thế này:
Trong đoạn này, chúng tôi đang sử dụng phương thức GET, được xác định trong 5, để gửi thông tin sẽ được chèn vào biểu mẫu, tên được xác định trong 6, đến trang đích ( 7).Chèn các trường vào biểu mẫuBước tiếp theo là chèn các trường hoặc 8 vào biểu mẫu của chúng tôi, nơi người dùng có thể nhập các giá trị. Hãy cập nhật tệp nguồn của chúng tôi như thế này:
Chúng tôi đã chèn 3 trường, được xác định bởi thẻ HTML 9 và cũng là 1 nút gửi dữ liệu của biểu mẫu, sử dụng 0.Chúng tôi cũng thêm nhãn vào các trường văn bản, sử dụng các thẻ 1. Lưu ý rằng mỗi giá trị trên các thuộc tính 2, trên mỗi phần tử 3 tương ứng với thuộc tính 4 của một trường 8, như thế này: 6 đề cập cụ thể đến trường chứa thuộc tính 7 tương ứng và ngược lại.
Cuối cùng, thuộc tính 0 trong mỗi trường 9 sẽ được sử dụng để có được các giá trị được người dùng chèn vào trường tương ứng khi chúng ta chuyển sang PHP.Kết quả cuối cùng, được hiển thị trong trình duyệt của máy khách, sẽ trông như thế này: Đọc dữ liệu với PHPSau khi hoàn thành biểu mẫu HTML của chúng tôi, chúng tôi có thể chuyển sang bước tiếp theo. Hãy xác định các yếu tố của trang đích bằng PHP. Mã nguồn bên dưới, được chèn vào tệp 2, sẽ được thực hiện bởi PHP ngay khi người dùng gửi dữ liệu biểu mẫu mà chúng tôi đã tạo trước đó.
Lưu ý rằng chúng tôi sử dụng biến SuperGlobal 3 để có được các giá trị được người dùng chèn vào, được truyền bằng giao thức HTTP. Đối với mỗi trường 9 mà trước đây chúng tôi đã tạo trên biểu mẫu, thuộc tính 0 tương ứng của nó phải được thông báo trong biến SuperGlobal. Ví dụ: trường 9 hiển thị thuộc tính 7 có thể được tìm thấy trong PHP bằng cách sử dụng 8.PHP có một số biến SuperGlobals bản địa, chẳng hạn như 9, mysqli_real_escape_string 0 và mysqli_real_escape_string 1. Hãy nhớ rằng chúng tôi sử dụng chúng theo phương thức yêu cầu HTTP mà chúng tôi đang sử dụng để truyền dữ liệu, do đó, nó phải tương ứng với những gì được xác định trong thuộc tính mysqli_real_escape_string 2 của phần tử 4 của chúng tôi.according to the HTTP request method that we are using for data transmission, so it must correspond to what been
defined in the mysqli_real_escape_string 2 attribute of our 4 element.
Sau đó, chúng tôi tách các chuỗi và các biến trong PHP với ký tự 📝 Học bằng cách làmBạn có nhận thấy rằng địa chỉ URL trên trang 2 hiển thị các giá trị được nhập trong trang nguồn không?Kiểm tra số 1: Viết lại mã nguồn của biểu mẫu chúng tôi đã mã hóa, bằng cách sử dụng một phương thức yêu cầu khác, để thông tin vẫn an toàn khỏi việc đọc của người nghe lén và những người trái phép. Sau khi bạn hoàn thành, bạn có thể kiểm tra câu trả lời cuối cùng. Rewrite the source code of the form we coded, using another requisition method, so that the information stays safe from reading by eavesdroppers and unauthorized people. After you finish, you can check the final answer. Tăng bảo mật hình thức HTMLHình thức HTML của chúng tôi cuối cùng đã được thực hiện! Tuy nhiên, chúng tôi có thể tăng tính bảo mật của trang của chúng tôi, bảo vệ việc đọc thông tin trên PHP. Đây là bước cuối cùng của chúng tôi. Chúng tôi sẽ thêm một lớp bảo mật bổ sung, mặc dù cơ bản, để ngăn PHP thực thi các lệnh tại thời điểm nó nhận và hiển thị các giá trị được báo cáo bởi máy khách.
Kỹ thuật lọc và biến đổi các giá trị được người dùng nhập vào thành các chuỗi đơn giản hơn được gọi là vệ sinh. Theo mặc định, PHP có một tập hợp các chức năng gốc giúp chúng tôi ở bước này, chẳng hạn như sau:sanitization. By default, PHP has a collection of native functions that helps us on this step, such as the following:
Khi chúng tôi sử dụng quá trình vệ sinh đầy đủ, ngay khi máy chủ nhận được thông tin không chính xác - ví dụ:
Hãy chỉnh sửa mã nguồn của trang của chúng tôi, bằng cách thêm một trong các chức năng vệ sinh này. Mã cuối cùng của chúng tôi sẽ trông như thế này:
Kết quả cuối cùng, được hiển thị trong trình duyệt, sẽ trông giống như hình dưới đây: 📝 Học bằng cách làmBạn đã bao giờ nhận thấy rằng phần lớn các trang web và công cụ tìm kiếm sử dụng tham số Kiểm tra số 2: Tạo biểu mẫu tìm kiếm, sử dụng HTML và PHP, chứa ít nhất 1 trường văn bản và 1 nút để gửi dữ liệu, để URL địa chỉ trên trang đích hiển thị tham số Sự kết luậnVì vậy, chúng tôi đã hoàn thành! Chúng tôi đã thực hiện biểu mẫu điện tử của chúng tôi trong HTML có khả năng truyền dữ liệu qua các phương thức yêu cầu HTTP, trong trường hợp này, nhận hoặc đăng - và chúng tôi cũng hiểu cách chúng hoạt động - và gửi chúng đến trang đích được viết bằng PHP. Sau đó, nó nhận được, xử lý dữ liệu và hiển thị thông tin trên màn hình của người dùng. Ngoài ra, chúng tôi đã vệ sinh các giá trị được người dùng thông báo để tránh các vấn đề nghiêm trọng về bảo mật thông tin. Các bước tiếp theo 🚶 🚶Bảo mật Internet không bao giờ là quá nhiều, vì vậy luôn có một cái gì đó để học và áp dụng nhiều hơn. Để xây dựng các ứng dụng an toàn hơn, hãy chắc chắn theo dõi bài viết tiếp theo về loạt bài này và đọc chủ đề bảo mật trong hướng dẫn sử dụng PHP. Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào về cách xây dựng các ứng dụng an toàn hơn bằng PHP, hãy chia sẻ nó trong các bình luận. 📣 Người giới thiệu. . . . . . . . Nhận giá trị an toàn trong PHP là gì?Nó chứa dữ liệu có thể bị thao túng, nhưng miễn là dữ liệu đó không được sử dụng một cách ngu ngốc, đó không phải là rủi ro bảo mật..
Phương pháp nào được bảo mật để đảm bảo dữ liệu trong PHP?Sử dụng chứng chỉ SSL cho HTTPS HTTPS cung cấp kênh truy cập được bảo mật và được mã hóa cho các trang web không tin cậy.Bạn phải bao gồm HTTPS bằng cách cài đặt chứng chỉ SSL vào trang web của bạn.Nó cũng tăng cường các ứng dụng web của bạn chống lại các cuộc tấn công XSS và ngăn các tin tặc đọc dữ liệu được vận chuyển bằng mã.
HTTPs provides a secured and encrypted accessing channel for untrusted sites. You must include HTTPS by installing SSL certificate into your website. It also strengthens your web applications against XSS attacks and prevents the hackers to read transported data using codes.
Làm cách nào để bảo mật trang đăng nhập của mình trong PHP?Bắt đầu.Có một vài bước chúng ta cần thực hiện trước khi tạo hệ thống đăng nhập an toàn của mình..... Tạo thiết kế mẫu đăng nhập..... Tạo cơ sở dữ liệu và các bảng thiết lập..... Xác thực người dùng với PHP..... Tạo trang chủ..... Tạo trang hồ sơ..... Tạo tập lệnh đăng xuất .. Post có phải PHP an toàn không?Bài đăng an toàn hơn là nhận được vì một vài lý do.Nhận tham số được truyền qua URL.Điều này có nghĩa là các tham số được lưu trữ trong nhật ký máy chủ và lịch sử trình duyệt. for a couple of reasons. GET parameters are passed via URL. This means that parameters are stored in server logs, and browser history. |