Hướng dẫn php security w3schools - php security w3schools

Học PHP

PHP là ngôn ngữ kịch bản máy chủ và một công cụ mạnh mẽ để tạo các trang web năng động và tương tác.

PHP là một sự thay thế được sử dụng rộng rãi, miễn phí và hiệu quả cho các đối thủ cạnh tranh như Microsoft's ASP.

Bắt đầu học PHP ngay bây giờ »


Dễ học với "php tryit"

Với trình chỉnh sửa "Php Tryit" trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã PHP và nhấp vào nút để xem kết quả.

Thí dụ



echo "My first PHP script!";
?>


Try it Yourself »

Hãy tự mình thử »


Nhấp vào nút "Hãy tự mình thử" để xem nó hoạt động như thế nào.



Bài tập PHP

Ví dụ PHP

Tìm hiểu bằng ví dụ! Hướng dẫn này bổ sung tất cả các giải thích với các ví dụ làm rõ.


Xem tất cả các ví dụ PHP

Bài kiểm tra câu đố PHP

Tìm hiểu bằng cách làm một bài kiểm tra! Câu đố này sẽ cung cấp cho bạn một tín hiệu về mức độ bạn biết hoặc không biết về PHP.


Bắt đầu câu đố PHP!

Việc học của tôi

Theo dõi tiến trình của bạn với chương trình "Học tập" miễn phí tại đây tại W3Schools.

Đăng nhập vào tài khoản của bạn và bắt đầu kiếm điểm!

Hướng dẫn php security w3schools - php security w3schools


Đây là một tính năng tùy chọn. Bạn có thể học W3Schools mà không cần sử dụng học tập của tôi.

Tài liệu tham khảo PHP


Tham chiếu PHP của W3Schools chứa các loại khác nhau của tất cả các hàm, từ khóa và hằng số PHP, cùng với các ví dụ.

Khởi động sự nghiệp của bạnthe course

Được chứng nhận bằng cách hoàn thành khóa học

Được chứng nhận




Bước tiếp theo là thực hiện các trường đầu vào cần thiết và tạo thông báo lỗi nếu cần.


Xác nhận hình thức PHP

Hãy suy nghĩ bảo mật khi xử lý các hình thức PHP!

Các trang này sẽ chỉ ra cách xử lý các biểu mẫu PHP với bảo mật trong tâm trí. Xác nhận đúng dữ liệu biểu mẫu là rất quan trọng để bảo vệ biểu mẫu của bạn khỏi tin tặc và người gửi thư rác!

Biểu mẫu HTML mà chúng tôi sẽ làm việc tại các chương này, chứa các trường đầu vào khác nhau: các trường văn bản bắt buộc và tùy chọn, nút radio và nút gửi:

Các quy tắc xác thực cho biểu mẫu trên như sau:

Đồng ruộngQuy tắc xác nhận
TênYêu cầu. + Chỉ phải chứa các chữ cái và khoảng trắng
E-mailYêu cầu. + Phải chứa một địa chỉ email hợp lệ (với @ và.)
Trang mạngKhông bắt buộc. Nếu có, nó phải chứa một URL hợp lệ
Bình luậnKhông bắt buộc. Trường đầu vào đa dòng (TextArea)
Giới tínhYêu cầu. Phải chọn một

Đầu tiên chúng ta sẽ xem mã HTML đơn giản cho biểu mẫu:



Trường văn bản

Tên, email và trường trang web là các yếu tố đầu vào văn bản và trường bình luận là một textarea. Mã HTML trông như thế này:

Tên: E-mail: Trang web: Nhận xét:
E-mail:
Website:
Comment:


Nút radio

Các trường giới tính là các nút radio và mã HTML trông như thế này:

Giới tính: Femalemalether
Female
Male
Other


Phần tử biểu mẫu

Mã HTML của biểu mẫu trông như thế này:

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Biến $ _server ["php_elf"] là gì?

$ _Server ["php_elf"] là một biến siêu toàn cầu trả về tên tệp của tập lệnh hiện đang thực hiện.

Vì vậy, $ _Server ["php_elf"] gửi dữ liệu biểu mẫu đã gửi đến chính trang, thay vì nhảy đến một trang khác. Bằng cách này, người dùng sẽ nhận được thông báo lỗi trên cùng một trang với biểu mẫu.

Hàm htmlspecialchars () là gì?

Lưu ý lớn về bảo mật mẫu php


Lưu ý lớn về bảo mật mẫu php

Biến $ _server ["php_elf"] có thể được sử dụng bởi tin tặc!

Nếu php_elf được sử dụng trong trang của bạn thì người dùng có thể nhập các lệnh chém (/) và sau đó một số lệnh scripting sesit (XSS) để thực thi.

Scripting Cross Site (XSS) là một loại lỗ hổng bảo mật máy tính thường được tìm thấy trong các ứng dụng web. XSS cho phép kẻ tấn công đưa tập lệnh phía máy khách vào các trang web được xem bởi những người dùng khác.

Giả sử chúng tôi có biểu mẫu sau trong một trang có tên là "test_form.php":

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Biến $ _server ["php_elf"] là gì?

$ _Server ["php_elf"] là một biến siêu toàn cầu trả về tên tệp của tập lệnh hiện đang thực hiện.

Vì vậy, $ _Server ["php_elf"] gửi dữ liệu biểu mẫu đã gửi đến chính trang, thay vì nhảy đến một trang khác. Bằng cách này, người dùng sẽ nhận được thông báo lỗi trên cùng một trang với biểu mẫu.

alert('hacked')

Hàm htmlspecialchars () là gì?

Làm thế nào để tránh các khai thác $ _server ["php_elf"]?any JavaScript code can be added inside the

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".


Biến $ _server ["php_elf"] là gì?

$ _Server ["php_elf"] là một biến siêu toàn cầu trả về tên tệp của tập lệnh hiện đang thực hiện.

Vì vậy, $ _Server ["php_elf"] gửi dữ liệu biểu mẫu đã gửi đến chính trang, thay vì nhảy đến một trang khác. Bằng cách này, người dùng sẽ nhận được thông báo lỗi trên cùng một trang với biểu mẫu.

location.href('http://www.hacked.com')

Hàm htmlspecialchars () là gì?

Chúng tôi cũng sẽ làm thêm hai điều nữa khi người dùng gửi biểu mẫu:

Lưu ý lớn về bảo mật mẫu php

  1. Biến $ _server ["php_elf"] có thể được sử dụng bởi tin tặc!
  2. Nếu php_elf được sử dụng trong trang của bạn thì người dùng có thể nhập các lệnh chém (/) và sau đó một số lệnh scripting sesit (XSS) để thực thi.

Scripting Cross Site (XSS) là một loại lỗ hổng bảo mật máy tính thường được tìm thấy trong các ứng dụng web. XSS cho phép kẻ tấn công đưa tập lệnh phía máy khách vào các trang web được xem bởi những người dùng khác.

Chúng tôi sẽ đặt tên cho chức năng test_input ().

Bây giờ, chúng ta có thể kiểm tra từng biến $ _POST với hàm test_input () và tập lệnh trông như thế này:

Thí dụ

Khi biểu mẫu được gửi, dữ liệu biểu mẫu sẽ được gửi với Phương thức = "Post".
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";

if ($ _server ["request_method"] == "post") {& nbsp; $ name = test_input ($ _ post ["name"]); & nbsp; $ email = test_input ($ _ post ["email"]); & nbsp; $ trang web = test_input ($ _ post ["trang web"]); & nbsp; $ bình luận = test_input ($ _ post ["bình luận"]); & nbsp; $ giới tính = test_input ($ _ post ["Giới tính"]);}
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

hàm test_input ($ data) {& nbsp; $ data = trim ($ data); & nbsp; $ data = stripslashes ($ data); & nbsp; $ data = htmlspecialchars ($ data); & nbsp; trả về $ dữ liệu; }?>
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Chạy ví dụ »

Lưu ý rằng khi bắt đầu tập lệnh, chúng tôi kiểm tra xem biểu mẫu đã được gửi bằng $ _Server ["request_method"]. Nếu request_method là bài đăng, thì biểu mẫu đã được gửi - và nó phải được xác thực. Nếu nó chưa được gửi, hãy bỏ qua xác thực và hiển thị một biểu mẫu trống.

Tuy nhiên, trong ví dụ trên, tất cả các trường đầu vào là tùy chọn. Tập lệnh hoạt động tốt ngay cả khi người dùng không nhập bất kỳ dữ liệu nào.

Bước tiếp theo là thực hiện các trường đầu vào cần thiết và tạo thông báo lỗi nếu cần.