Hướng dẫn what is the purpose of $_ php_self? - mục đích của $_ php_self là gì?

Trong bài viết này cho thấy việc sử dụng biến PHP_elf và cách tránh khai thác PHP_elf.

Biến PHP_Self là gì?

PHP_Self là một biến trả về tập lệnh hiện tại được thực thi. Biến này trả về tên và đường dẫn của tệp hiện tại (từ thư mục gốc). Bạn có thể sử dụng biến này trong lĩnh vực hành động của biểu mẫu. Ngoài ra còn có những khai thác nhất định mà bạn cần phải biết. Chúng ta sẽ thảo luận về tất cả các điểm này trong bài viết này. Bây giờ chúng tôi sẽ thấy một số ví dụ. ________số 8

a) Giả sử tệp PHP của bạn được đặt tại địa chỉ: http://www.yourserver.com/form-action.php

Trong trường hợp này, php_elf sẽ chứa:

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
0

b) Giả sử tệp PHP của bạn được đặt tại địa chỉ:

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
1

Đối với url này, php_elf sẽ là:

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
2

Sử dụng biến PHP_elf trong trường hành động của biểu mẫu

Một cách sử dụng phổ biến của biến PHP_elf là trong trường hành động của thẻ

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
3. Trường hành động của biểu mẫu hướng dẫn nơi gửi dữ liệu biểu mẫu khi người dùng nhấn nút Gửi. Người ta thường có cùng một trang PHP như trình xử lý cho biểu mẫu.

Tuy nhiên, nếu bạn cung cấp tên của tệp trong trường hành động, trong trường hợp bạn tình cờ đổi tên tệp, bạn cũng cần cập nhật trường hành động; Hoặc các biểu mẫu của bạn sẽ ngừng hoạt động.

Sử dụng biến PHP_elf Bạn có thể viết mã chung hơn có thể được sử dụng trên bất kỳ trang nào và bạn không cần chỉnh sửa trường hành động.

Hãy xem xét, bạn có một tệp được gọi là form-action.php và muốn tải cùng một trang sau khi biểu mẫu được gửi. Mã biểu mẫu thông thường sẽ là:


<form  method="post" action="form-action.php" >

Chúng ta có thể sử dụng biến PHP_elf thay vì hình thức hành động. Mã trở thành:

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >

Mã hoàn chỉnh của Form Form-action.php

Đây là mã kết hợp, chứa cả biểu mẫu và tập lệnh PHP.


php
if(isset($_POST['submit'])) 
{ 
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name :  $name ";
    echo "
You can use the following form again to enter a new name."
;
} ?>


Mã PHP này nằm trên phần HTML và sẽ được thực thi trước. Dòng mã đầu tiên là kiểm tra xem biểu mẫu có được gửi hay không. Tên của nút gửi là, gửi. Khi nhấn nút gửi,

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
4 sẽ được đặt và điều kiện nếu điều kiện sẽ trở thành đúng. Trong trường hợp này, chúng tôi đang hiển thị tên được nhập bởi người dùng.

Nếu biểu mẫu không được gửi thì điều kiện IF sẽ sai vì sẽ không có giá trị trong

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
4 và mã PHP sẽ không được thực thi. Trong trường hợp này, chỉ có biểu mẫu sẽ được hiển thị.

Khai thác php_elf là gì và cách tránh chúng

Biến PHP_elf được sử dụng để lấy tên và đường dẫn của tệp hiện tại nhưng nó cũng có thể được sử dụng bởi các 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.

Xem ví dụ bên dưới:


<form name="test" action="$_SERVER['PHP_SELF']; ?>" method="post">

Bây giờ, nếu người dùng đã nhập URL bình thường vào thanh địa chỉ như

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
6, mã trên sẽ được dịch là:

<form name="test" action="form-action.php" method="post">

Đây là trường hợp bình thường.

Bây giờ hãy xem xét rằng người dùng đã gọi tập lệnh này bằng cách nhập URL sau vào thanh địa chỉ trình duyệt:

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
7

Trong trường hợp này, sau khi PHP xử lý mã trở thành:


<form name="test" method="post" action="form-action.php"/>
<script>alert('xss')script><foo"">

Bạn có thể thấy rằng mã này đã thêm một thẻ tập lệnh và lệnh cảnh báo. Khi trang này được tải, người dùng sẽ thấy một hộp cảnh báo. Đây chỉ là một ví dụ đơn giản làm thế nào biến PHP_elf có thể được khai thác.

Bất kỳ mã JavaScript nào cũng có thể được thêm vào giữa thẻ script script.

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
8. Một hacker có thể liên kết đến một tệp JavaScript có thể được đặt trên một máy chủ khác. Tệp JavaScript đó có thể giữ mã độc có thể thay đổi các biến toàn cầu và cũng có thể gửi biểu mẫu đến một địa chỉ khác để ghi dữ liệu người dùng chẳng hạn.

Cách tránh khai thác PHP_Self

Có thể tránh các khai thác PHP_elf bằng cách sử dụng hàm & nbsp; htmlentities (). Ví dụ: mã biểu mẫu phải như thế này để tránh khai thác PHP_elf:

<form name="test" action="$_SERVER['PHP_SELF']); ?>" method="post">

Hàm HTMLENTITY () mã hóa các thực thể HTML. Bây giờ nếu người dùng cố gắng khai thác biến PHP_elf, nỗ lực sẽ thất bại và kết quả của việc nhập mã độc vào URL sẽ dẫn đến đầu ra sau:

<form name="test" method="post" 
action="form-action.php/"><script>alert('xss')&
lt;/script><foo">

Như bạn có thể thấy, phần kịch bản bây giờ là ’vệ sinh.

Vì vậy, don không quên chuyển đổi mọi lần xuất hiện của

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
9 thành

php
if(isset($_POST['submit'])) 
{ 
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name :  $name ";
    echo "
You can use the following form again to enter a new name."
;
} ?>


0 trong suốt kịch bản của bạn.

Lưu ý: Một số máy chủ PHP được cấu hình để giải quyết vấn đề này và họ tự động thực hiện chuyển đổi này. Nhưng, tại sao lại gặp rủi ro? Làm cho nó trở thành thói quen sử dụng htmlentity () với php_elf. Some PHP servers are configured to solve this issue and they automatically do this conversion.But, why take risk? make it a habit to use htmlentities() with PHP_SELF.

Xem thêm

  • Tạo biểu mẫu đăng ký bằng PHP
  • Tạo biểu mẫu đăng nhập bằng PHP
  • Hộp kiểm xử lý trong bộ xử lý biểu mẫu PHP
  • Xử lý hộp chọn (danh sách thả xuống) ở dạng PHP
  • Tập lệnh xác thực biểu mẫu PHP
  • Hướng dẫn mẫu PHP
  • Sử dụng phương thức GET ở dạng PHP
  • Sử dụng phương thức bài ở dạng PHP

Biến Php_elf của máy chủ $ _ giải thích với ví dụ là gì?

$ _Server ['php_elf'] biến. Phần tử mảng này chỉ ra tên tệp của tập lệnh hiện đang thực hiện. Ví dụ: nếu bạn chạy www.cyberciti.biz/index.php, $ _server ['php_elf'] sẽ là /index.This array element points out the filename of the currently executing script. For example, if you run www.cyberciti.biz/index.php, $_SERVER['PHP_SELF'] would be /index.

Biến máy chủ $ _ là gì?

$ _Server trong PHP là một biến siêu global.Biến này là một mảng kết hợp lưu trữ thông tin về máy chủ, đường dẫn và tập lệnh.PHP cung cấp các tham số khác nhau có thể được truyền trong $ _Server như $ _server ['php_elf'], $ _server ['server_protocol'], v.v.

Máy chủ $ _ ['Script_name'] là gì?

$ _Server ['script_name'] là phía máy chủ.Kết quả là không có vấn đề tương thích trình duyệt nào và không nên có vấn đề bảo mật vì nó chỉ đơn giản là một dấu hiệu cho thấy máy chủ đang phục vụ cho URL được yêu cầu (tức là http://example.com/ và http: // ví dụ.com/index.php sẽ cả hai kết quả là '/index.

HTMLSPECIALCHARS là gì ($ _ Máy chủ PHP_elf là gì?

Php echo htmlspecialchars ($ _ server ['php_elf']);?Nó gửi dữ liệu biểu mẫu được gửi đến cùng một trang, thay vì nhảy trên một trang khác.