Bảo mật mã PHP của bạn

  • Điều quan trọng là đảm bảo dữ liệu an toàn từ người dùng (biểu mẫu và url, v.v.) ngoài máy chủ hệ điều hành và máy chủ http chủ yếu vì tấn công web.
  • Có 3 loại để bảo mật mã php của bạn:

Xác thực người dùng dữ liệu

Khi trang web cung cấp các biểu mẫu cho phép người dùng chụp và gửi nội dung, điều này không đủ để chỉ ra định dạng của các mục (địa chỉ email, số điện thoại, số lượng sản phẩm) Máy chủ cũng cần được theo dõi (ví dụ: PHP) thông thường theo mong đợi của chúng tôi. Cân nhắc toàn bộ số, chuyển đổi tất cả dữ liệu được gửi bởi người dùng:

Xác thực dữ liệu từ URL hoặc Biểu mẫu

Hầu như tất cả dữ liệu nhận được là từ URL hoặc biểu mẫu mà quản trị viên web đã thiết lập. Hầu như tất cả các tham số hiển thị URL chỉ định như dưới đây:

/index.php?rub=25

Thông số này tuy nhiên không nên được sửa đổi. Nhưng điều này có thể như sau:

 /index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+ 
  • Điều quan trọng là kiểm tra xem định dạng nhận được thông qua URL hoặc biểu mẫu được mong đợi cho dù là loại dữ liệu nào.
  • Bạn có thể sử dụng hàm filter_input () để xác minh tương tự.
  • Ví dụ: nếu bạn nhận được email từ người dùng từ bài đăng định dạng với tên trường là email. Bạn có thể phục hồi tương tự bằng cách:

 $ email = filter_input (INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); if ($ email) {// Mục nhập địa chỉ email thực sự là định dạng địa chỉ thư} 

Hàm này có thể lọc nhiều thứ: địa chỉ IP, URL, v.v. Có thể có các sửa đổi như chuỗi mã hóa trước khi gửi qua URL dưới dạng xử lý theo htmlentities ().

  • Một số bộ lọc có thể được kết hợp bằng cách sử dụng "|" .
  • Để xác thực một địa chỉ IP chỉ dưới định dạng Ipv4:

$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);

Nhấp vào liên kết sau cho các bộ lọc:

//www.php.net/filter

Bỏ qua nội dung được hiển thị của URL

Khi nội dung được nhập bởi người dùng được hiển thị trên màn hình, nó chứa mã HTML hoặc JavaScript, tuy nhiên điều này bắt buộc phải bảo vệ.

Nếu nội dung được hiển thị trong html: bạn phải HTMLencode cài đặt để chuyển đổi tất cả các ký tự trong các thực thể HTML tương đương. Dưới đây là chức năng php để tự động hóa quá trình này:

echo htmlentity ($ _ YÊU CẦU ['nội dung']);

Nếu nội dung phải được hiển thị trong một URL: bạn phải urlencode nội dung.

PHP có hai chức năng để thực hiện mã hóa này: urlencode () và rawurlencode (). Sự khác biệt giữa hai chức năng này là mã hóa của một khu vực, trong chức năng đầu tiên cung cấp và cung cấp% 20 và "+" trong lần thứ hai.

 echo '//www.website?valeur='.urlencode($_REQUEST['value']); 

Nếu nội dung nên được lưu trữ trong cơ sở dữ liệu: cần phải thoát tất cả các ký tự có vai trò cụ thể trong máy chủ cơ sở dữ liệu được sử dụng. Đối với PHP và MySQL, hàm mysql_escape_opes () làm cho tất cả các ký tự có hại trong chuỗi được truyền dưới dạng tham số.

 $ query = 'CHỌN id TỪ matable WHERE user = "'. mysql_escape_opes ($ _ REQUEST ['user']). '"'; 

Lưu ý rằng máy chủ được cấu hình với tùy chọn PHP Magic_quotes, dữ liệu được truyền bởi người dùng sẽ được bảo vệ tự động bằng dấu gạch chéo ngược (dấu gạch chéo ngược). Do đó, trước khi bảo vệ mysql_escape_opes, bạn nên "hoàn tác" bảo vệ cơ bản này:

 $ query = 'CHỌN id TỪ mytable WHERE user = "'. thoát y (mysql_escape_opes ($ _ REQUEST ['user'])). '"'; 
Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên