Hướng dẫn php secure input - đầu vào an toàn php

Bảo mật ứng dụng web

Giới thiệu

Tài liệu này sẽ liệt kê các mối đe dọa bảo mật có thể có đối với ứng dụng web, giải thích và các biện pháp phòng ngừa.

Nội dung chính ShowShow

  • Bảo mật ứng dụng web
  • Giới thiệu
  • Tài liệu này sẽ liệt kê các mối đe dọa bảo mật có thể có đối với ứng dụng web, giải thích và các biện pháp phòng ngừa.
  • Nội dung chính Show
  • Nội dung chính
  • Nội phân chính
  • Làm thế nào để biết nếu một trang web dễ bị tổn thương?
  • 1. Cập nhật phiên bản PHP của bạn thường xuyên
  • Thực tiễn tốt nhất cho bảo mật ứng dụng web
  • Backdoor Php
  • 4. Don lồng tải lên tất cả các tệp khung lên máy chủ của bạn
  • 5. Luôn xác nhận đầu vào của người dùng
  • 6. Hạn chế truy cập thư mục
  • 7. Xác minh cấu hình SSL của bạn
  • 8. Sử dụng mã hóa URL
  • 9. Tránh bao gồm tệp từ xa
  • 10. Hãy nhớ rằng, các vấn đề tài liệu
  • Tóm tắt bảo mật PHP
  • PHP có tốt cho bảo mật không?
  • Thực tiễn tốt nhất mã hóa an toàn là gì?
  • Phương pháp nào được bảo mật để đảm bảo dữ liệu trong PHP?

Nội dung chính Show

  • Bảo mật ứng dụng web
  • Giới thiệu
  • Tài liệu này sẽ liệt kê các mối đe dọa bảo mật có thể có đối với ứng dụng web, giải thích và các biện pháp phòng ngừa.
  • Nội dung chính Show
  • Nội dung chính
  • Nội phân chính
  • Làm thế nào để biết nếu một trang web dễ bị tổn thương?
  • 1. Cập nhật phiên bản PHP của bạn thường xuyên
  • Thực tiễn tốt nhất cho bảo mật ứng dụng web
  • Backdoor Php
  • Backdoor Php
  • 4. Don lồng tải lên tất cả các tệp khung lên máy chủ của bạn
  • 5. Luôn xác nhận đầu vào của người dùng
  • 6. Hạn chế truy cập thư mục
  • 7. Xác minh cấu hình SSL của bạn
  • 8. Sử dụng mã hóa URL
  • 9. Tránh bao gồm tệp từ xa
  • 10. Hãy nhớ rằng, các vấn đề tài liệu
  • Tóm tắt bảo mật PHP
  • PHP có tốt cho bảo mật không?
  • Thực tiễn tốt nhất mã hóa an toàn là gì?

Nội dung chính Show

  • Bảo mật ứng dụng web
  • Giới thiệu
  • Tài liệu này sẽ liệt kê các mối đe dọa bảo mật có thể có đối với ứng dụng web, giải thích và các biện pháp phòng ngừa.
  • Nội dung chính Show
  • Nội dung chính
  • Làm thế nào để biết nếu một trang web dễ bị tổn thương?
  • 1. Cập nhật phiên bản PHP của bạn thường xuyên
  • Nội phân chính
  • Làm thế nào để biết nếu một trang web dễ bị tổn thương?
  • Thực tiễn tốt nhất cho bảo mật ứng dụng web
  • Backdoor Php
  • Backdoor Php
  • 4. Don lồng tải lên tất cả các tệp khung lên máy chủ của bạn
  • 5. Luôn xác nhận đầu vào của người dùng
  • 6. Hạn chế truy cập thư mục
  • 7. Xác minh cấu hình SSL của bạn
  • 8. Sử dụng mã hóa URL
  • 9. Tránh bao gồm tệp từ xa
  • 10. Hãy nhớ rằng, các vấn đề tài liệu
  • Tóm tắt bảo mật PHP
  1. PHP có tốt cho bảo mật không?
  2. Thực tiễn tốt nhất mã hóa an toàn là gì?
  3. Phương pháp nào được bảo mật để đảm bảo dữ liệu trong PHP?
  4. Bảo mật ứng dụng PHP là gì?
  5. 3. Sử dụng các câu lệnh SQL đã chuẩn bị
  6. 2. Cẩn thận với các cuộc tấn công XSS (kịch bản chéo trang)
  7. Dấu chân
  8. eval()
  9. Quét
  10. SQL tiêm
  11. Tải lên tệp

Tài liệu này sẽ liệt kê các mối đe dọa bảo mật có thể có đối với ứng dụng web, giải thích và các biện pháp phòng ngừa.

Nội dung chính Show

  1. Nội dung chính
  2. Làm thế nào để biết nếu một trang web dễ bị tổn thương?
  3. 1. Cập nhật phiên bản PHP của bạn thường xuyên

Nội dung chính Show

  • Nội dung chính

  • Làm thế nào để biết nếu một trang web dễ bị tổn thương?

  • 1. Cập nhật phiên bản PHP của bạn thường xuyên

  • Nội phân chính

  • Làm thế nào để biết nếu một trang web dễ bị tổn thương?

  • Thực tiễn tốt nhất cho bảo mật ứng dụng web

  • Backdoor Php

  • Backdoor Php

  • 4. Don lồng tải lên tất cả các tệp khung lên máy chủ của bạn

  • 5. Luôn xác nhận đầu vào của người dùng

Nội dung chính

Làm thế nào để biết nếu một trang web dễ bị tổn thương?

1. Cập nhật phiên bản PHP của bạn thường xuyên

 grep -iR 'c99' /var/www/html/
 grep -iR 'r57' /var/www/html/
 find /var/www/html/ -name \*.php -type f -print0 | xargs -0 grep c99
 grep -RPn "(passthru|shell_exec|system|base64_decode|fopen|fclose|eval)" /var/www/html/

Nội phân chính


Làm thế nào để biết nếu một trang web dễ bị tổn thương?OWASP secure coding practices and their checklist for testing for any vulnerabilities ( https://www.owasp.org).


1. Cập nhật phiên bản PHP của bạn thường xuyên ( http://phpsec.org/) group of PHP experts dedicated to promoting secure programming practices within the PHP community. Members of the PHPSC seek to educate PHP developers about security through a variety of resources, including documentation, tools, and standards.

Backdoor Php

Backdoor Php

Làm thế nào để biết nếu một trang web dễ bị tổn thương?

1. Cập nhật phiên bản PHP của bạn thường xuyên

Nội phân chính

1. Cập nhật phiên bản PHP của bạn thường xuyên

Nội phân chính

Làm thế nào để biết nếu một trang web dễ bị tổn thương?

   

Thực tiễn tốt nhất cho bảo mật ứng dụng web

Backdoor Php

Backdoor Php

4. Don lồng tải lên tất cả các tệp khung lên máy chủ của bạn To prevent a cross-site scripting attack, make sure to escape any user input to avoid the remote execution of code.

6. Hạn chế truy cập thư mục

Backdoor Php

3. Sử dụng các câu lệnh SQL đã chuẩn bị

Ví dụ: truy vấn bên dưới sử dụng trực tiếp đầu vào người dùng không được giải quyết bên trong truy vấn SQL.

$users = mysql_query("SELECT * FROM `users` WHERE `id`='$_GET[id]'");

Điều này cung cấp cho một hacker cơ hội để phá vỡ tuyên bố và cố gắng truy vấn các thông tin khác, chẳng hạn như tất cả dữ liệu của người dùng. Với một tuyên bố đã chuẩn bị, các giá trị được đầu vào được thoát ra, không để lại chỗ cho một cuộc tấn công tiêm SQL.

Hãy cùng xem ví dụ dưới đây, sử dụng một tuyên bố đã chuẩn bị.

$stmt = $conn->prepare("INSERT INTO users (firstname, lastname) VALUES (?, ?)");
$stmt->bind_param("ss", $firstname, $lastname);

Lưu ý tham số đầu tiên của hàm

   
4. Điều này cho SQL truy vấn loại dữ liệu bạn truyền. Ở đây, cả các tham số
   
5 và
   
6 đều thuộc chuỗi loại. Đây là một biện pháp bảo mật bổ sung để xác nhận loại dữ liệu của đầu vào.

4. Don lồng tải lên tất cả các tệp khung lên máy chủ của bạn

Nhiều khung PHP bao gồm cấu trúc tệp kiểm soát mô hình. Điều này có nghĩa là chúng đi kèm với một cấu trúc tập tin lớn. Ví dụ, khung SLIM PHP tạo ra cấu trúc tệp sau.

public_html/
    .htaccess
    index.php
    styles/
    images/
    scripts/
app/
    routes/
        session.php
        member.php
        admin.php
vendor/
lib/
data/

Điều quan trọng là bạn không tải lên tất cả các tệp đó lên máy chủ web của mình. Chỉ tải lên các tệp web cần thiết nằm trong thư mục

   
7.

Tải lên tất cả các tệp lên máy chủ của bạn có nghĩa là người dùng độc hại có thể truy cập các tệp của bạn và kiểm tra logic doanh nghiệp của bạn. Điều này cho phép họ có được sự hiểu biết sâu sắc hơn về ứng dụng và có thể tìm thấy các lỗ hổng bảo mật hoặc lỗi mà họ có thể khai thác.

5. Luôn xác nhận đầu vào của người dùng

Khi bạn luôn xác nhận đầu vào của người dùng khi bạn chấp nhận đầu vào thông qua một trường đầu vào, điều này đảm bảo rằng mọi phần dữ liệu đều có loại và định dạng chính xác.

Thông thường, các nhà phát triển sử dụng các biểu thức thường xuyên (regex) để xác nhận các định dạng dữ liệu như ngày sinh hoặc số điện thoại.

Hãy để đọc ví dụ dưới đây, xác nhận nếu ngày sinh ở định dạng

   
8
   
2

6. Hạn chế truy cập thư mục

Hàm

   
9 cho phép bạn giới hạn các tệp mà PHP có thể truy cập trong hệ thống tập tin của bạn. Nếu bạn đặt chức năng
   
9 thành gốc của dự án của bạn, điều này có nghĩa là nó chỉ có thể truy cập các tệp trong gốc của dự án của bạn và đi xuống.

Trong trường hợp người dùng độc hại đạt được quyền truy cập vào máy chủ của bạn thông qua PHP và cố gắng truy cập các tệp nhạy cảm như

1, chức năng 
   
9 sẽ ngăn chặn điều này.

7. Xác minh cấu hình SSL của bạn

Mỗi máy chủ nên có chứng chỉ SSL để chuyển các tệp một cách an toàn qua HTTPS. Tuy nhiên, thường xuyên kiểm tra máy chủ của bạn để nhận chứng chỉ SSL lỗi thời hoặc mật mã yếu.

Thông thường, Sysadmins quên cập nhật chứng chỉ SSL khi hết hạn. Tuy nhiên, chứng chỉ SSL giúp trang web của bạn bảo vệ tốt hơn trước các cuộc tấn công XSS.

8. Sử dụng mã hóa URL

PHP cung cấp cho các nhà phát triển chức năng

3 để tạo ra các URL hợp lệ một cách an toàn. Theo tài liệu PHP, chức năng thuận tiện khi mã hóa một chuỗi được sử dụng trong phần truy vấn của URL.

Hãy tưởng tượng rằng đầu vào của người dùng được sử dụng để tạo URL. Trong trường hợp đó, bạn có thể sử dụng chức năng UrlenCode để tạo URL an toàn.

   
8

9. Tránh bao gồm tệp từ xa

Không bao giờ chấp nhận đầu vào người dùng để yêu cầu một tập tin. Ví dụ dưới đây hiển thị câu lệnh

4 sử dụng đầu vào do người dùng tạo và cho phép bao gồm tệp từ xa.
0

Trong trường hợp này, người dùng có thể nhập đường dẫn độc hại như

5 và hiển thị nội dung của tệp 
6 trên máy chủ Linux/Unix. Do đó, không bao giờ chấp nhận đầu vào người dùng để yêu cầu một trang. Nếu bạn vẫn muốn chấp nhận đầu vào của người dùng để mở tệp, hãy đảm bảo xác nhận đầu vào của người dùng.

Hơn nữa, sử dụng thực tiễn số 6 tốt nhất để hạn chế quyền truy cập thư mục với chức năng

   
9. Một giải pháp tốt hơn sẽ là chỉ định các lựa chọn có thể bằng cách sử dụng câu lệnh Switch.

Ví dụ: nếu đầu vào khớp với

8, bạn điều hướng người dùng đến trang chủ. Xem ví dụ dưới đây, minh họa một công tắc có điều kiện để điều hướng người dùng. Nếu trang không tồn tại, chúng tôi hiển thị một trang lỗi.
   
0

10. Hãy nhớ rằng, các vấn đề tài liệu

Cuối cùng, đừng quên ghi lại hành động của bạn. Bất cứ khi nào bạn thực hiện các thay đổi cho máy chủ của mình, hãy cập nhật phiên bản chứng chỉ SSL hoặc thay đổi mật khẩu, đảm bảo ghi lại những thay đổi đó.

Các nhà phát triển khác có thể thấy thông tin này hữu ích bất cứ khi nào họ muốn thay đổi máy chủ. Nó cho phép họ nhanh chóng kiểm tra những gì đã xảy ra gần đây. Bằng cách này, bạn đã giành chiến thắng gặp phải những bất ngờ bất ngờ, chẳng hạn như mật khẩu không dùng nữa cho máy chủ MySQL của bạn.

Hơn nữa, tài liệu là một phương tiện lý tưởng để chuyển kiến ​​thức. Trong trường hợp nhà phát triển rời khỏi công ty của bạn hoặc bị bệnh, không có kiến ​​thức nào bị mất. Đó là mục đích chính của tài liệu về kiến ​​thức truyền tải.

Tóm tắt bảo mật PHP

Cuối cùng, với tư cách là nhà phát triển PHP, bạn có trách nhiệm không chỉ thực hiện logic kinh doanh cần thiết mà còn để đảm bảo bảo mật của nó và mã mà bạn đã phát triển.

Bài học quan trọng từ bài viết này là xác nhận đầu vào của người dùng. Đầu vào của người dùng không được đánh giá thường là cơ sở của một vấn đề bảo mật. Hãy xem các vấn đề bảo mật như bao gồm tệp từ xa, mã hóa URL hoặc tấn công XSS. Tất cả chúng xảy ra thông qua đầu vào người dùng không hợp lệ.

Bạn muốn tìm hiểu thêm về thực hành bảo mật PHP tốt nhất? Đảm bảo kiểm tra Hướng dẫn bảo mật PHP và Danh sách kiểm tra bảo mật PHP SQREEN.

—-

Bài đăng này được viết bởi Michiel Mulder. Michiel là một nhà phát triển blockchain đam mê, thích viết nội dung kỹ thuật. Bên cạnh đó, anh thích học về tiếp thị, tâm lý học UX và tinh thần kinh doanh. Khi anh ấy không viết, anh ấy có lẽ thưởng thức bia Bỉ!

PHP có tốt cho bảo mật không?

PHP an toàn như bất kỳ ngôn ngữ chính nào khác. PHP an toàn như bất kỳ ngôn ngữ phía máy chủ lớn nào. Với các khung và công cụ PHP mới được giới thiệu trong vài năm qua, giờ đây việc quản lý bảo mật hàng đầu dễ dàng hơn bao giờ hết.. PHP is as secure as any major server-side language. With the new PHP frameworks and tools introduced over the last few years, it is now easier than ever to manage top-notch security.. PHP is as secure as any major server-side language. With the new PHP frameworks and tools introduced over the last few years, it is now easier than ever to manage top-notch security.. PHP is as secure as any major server-side language. With the new PHP frameworks and tools introduced over the last few years, it is now easier than ever to manage top-notch security.

Thực tiễn tốt nhất mã hóa an toàn là gì?

8 Mã hóa an toàn thực tiễn tốt nhất....

Bảo mật theo thiết kế ..

Quản lý mật khẩu ..

Kiểm soát truy cập..

Xử lý lỗi và ghi nhật ký ..

Cấu hình hệ thông..

Mô hình hóa mối đe dọa ..

Thực hành mật mã ..

Xác thực đầu vào và mã hóa đầu ra ..

Phương pháp nào được bảo mật để đảm bảo dữ liệu trong PHP?

SQL tiêm bằng cách sử dụng các tập lệnh tương tự như mã trên, kẻ tấn công có thể truy cập vào tất cả các bảng dữ liệu và thông tin nhạy cảm. Giải pháp cho điều này là sử dụng các truy vấn SQL được tham số hóa và các đối tượng dữ liệu PHP (PDO). Sử dụng các truy vấn được tham số hóa sẽ cho phép cơ sở dữ liệu phân biệt giữa các phần dữ liệu và truy vấn. By using scripts similar to the above code, attackers can get access to all data tables and sensitive information. The solution to this is to use parameterized SQL queries and PHP Data Objects (PDO). Using parameterized queries will let the database differentiate between the data and query parts. By using scripts similar to the above code, attackers can get access to all data tables and sensitive information. The solution to this is to use parameterized SQL queries and PHP Data Objects (PDO). Using parameterized queries will let the database differentiate between the data and query parts. By using scripts similar to the above code, attackers can get access to all data tables and sensitive information. The solution to this is to use parameterized SQL queries and PHP Data Objects (PDO). Using parameterized queries will let the database differentiate between the data and query parts.

Bảo mật ứng dụng PHP là gì?

Vì PHP rất phổ biến, nên bảo mật PHP là rất cần thiết và số lượng ứng dụng PHP dễ bị tổn thương là lớn. Hầu hết các ứng dụng web PHP đều chia sẻ các phần của mã hoặc tập lệnh với các ứng dụng web khác. Nếu đoạn mã được chia sẻ là dễ bị tổn thương, tất cả các ứng dụng đang sử dụng nó cũng dễ bị tổn thương.PHP security is essential and the number of vulnerable PHP applications is large. Most PHP web applications share parts of code or scripts with other web applications. If the shared piece of code is found to be vulnerable, all the applications that are using it are also vulnerable.PHP security is essential and the number of vulnerable PHP applications is large. Most PHP web applications share parts of code or scripts with other web applications. If the shared piece of code is found to be vulnerable, all the applications that are using it are also vulnerable.PHP security is essential and the number of vulnerable PHP applications is large. Most PHP web applications share parts of code or scripts with other web applications. If the shared piece of code is found to be vulnerable, all the applications that are using it are also vulnerable.