Hướng dẫn php _post security - php _post bảo mật

Tács giả: dương nguyễn phú cường

NgàoHồi xưa đó

Các mối đe dọa an ninh tiềm năng

Về cơ bản, họ là hai nhóm người có thể tấn công hệ thống của bạn

  • Tin tặc - với mục đích truy cập vào dữ liệu trái phép hoặc phá vỡ ứng dụng
  • Người dùng - Họ có thể nhập vào các tham số sai trong các biểu mẫu có thể có tác động tiêu cực trên trang web hoặc ứng dụng web.

Sau đây là các loại tấn công mà chúng ta cần phải chú ý. SQL Injection & nbsp; - Loại tấn công này nối mã có hại cho & nbsp; sql & nbsp; from. Điều này được thực hiện bằng cách sử dụng các biểu mẫu đầu vào hoặc URL của người dùng sử dụng các biến. Mã được thêm vào nhận xét điều kiện trong mệnh đề WHERE của câu lệnh SQL. Mã được thêm vào cũng có thể;SQL Injection – This type of attack appends harmful code to SQL statements. This is done using either user input forms or URLs that use variables. The appended code comments the condition in the WHERE clause of an SQL statement. The appended code can also;

  • Chèn một điều kiện sẽ luôn đúng
  • Xóa dữ liệu khỏi bảng
  • Cập nhật dữ liệu trong bảng
  • Loại tấn công này thường được sử dụng để có quyền truy cập trái phép vào một ứng dụng.

Kịch bản trang web chéo-& nbsp; Loại tấn công này chèn mã có hại thường là JavaScript. Điều này được thực hiện bằng cách sử dụng các biểu mẫu đầu vào của người dùng như liên hệ với chúng tôi và các mẫu bình luận. Điều này được thực hiện để; this type of attack inserts harmful code usually JavaScript. This is done using user input forms such as contact us and comments forms. This is done to;

  • Lấy thông tin nhạy cảm như dữ liệu cookie
  • Chuyển hướng người dùng đến một URL khác.
  • Các mối đe dọa khác có thể bao gồm - tiêm mã PHP, tiêm vỏ, tiêm email, công bố mã nguồn tập lệnh, v.v.

Bảo mật ứng dụng PHP thực hành tốt nhất

Bây giờ, hãy xem xét một số thực tiễn tốt nhất của bảo mật PHP mà chúng ta phải xem xét khi phát triển các ứng dụng của mình.

Các chức năng Strip_tags sẽ loại bỏ HTML, & nbsp; javascript & nbsp; hoặc thẻ PHP từ một chuỗi. Chức năng này rất hữu ích khi chúng ta phải bảo vệ ứng dụng của mình chống lại các cuộc tấn công như kịch bản trang web chéo. Hãy cùng xem xét một ứng dụng chấp nhận nhận xét từ người dùng.

My Commenting System";

echo $user_input;

?>

Giả sử bạn đã lưu bình luận.php trong thư mục PHPTUTS, duyệt đến URL & NBSP; http: //localhost/phptuts/comments.php http://localhost/phptuts/comments.php

Hướng dẫn php _post security - php _post bảo mật

Hãy giả sử bạn nhận được những điều sau đây là người dùng đầu vào & nbsp; cảnh báo ('trang web của bạn hút!');
alert('Your site sucks!');";

echo "

My Commenting System

"; echo $user_input; ?>

Duyệt đến URL & NBSP; http: //localhost/phptuts/comments.phphttp://localhost/phptuts/comments.php

Bây giờ, hãy bảo đảm ứng dụng của chúng tôi khỏi các cuộc tấn công như vậy bằng cách sử dụng chức năng Strip_tags.
alert('Your site sucks!');";

echo strip_tags($user_input);

?>

Duyệt đến URL & NBSP; http: //localhost/phptuts/comments.php http://localhost/phptuts/comments.php

Bây giờ, hãy bảo đảm ứng dụng của chúng tôi khỏi các cuộc tấn công như vậy bằng cách sử dụng chức năng Strip_tags. alert('Your site sucks!');"; echo strip_tags($user_input); ?>

Hàm Filter_Var PHP

Hàm Filter_VAR được sử dụng để xác nhận và vệ sinh dữ liệu. Xác thực kiểm tra nếu dữ liệu thuộc loại đúng. Kiểm tra xác thực số trên một chuỗi trả về kết quả sai.

alert('Your site sucks!');";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

Output:

alert('Your site sucks!');

Vệ sinh đang loại bỏ các ký tự bất hợp pháp khỏi một chuỗi. Kiểm tra liên kết này để biết toàn bộ tham chiếu & nbsp; filter_var Mã dành cho hệ thống nhận xét. Nó sử dụng chức năng Filter_VAR và Filter_Sanitize_Striped hằng số cho các thẻ dải.

Hàm MySQL_REAL_ESCAPE_STRING Chức năng này được sử dụng để bảo vệ ứng dụng chống tiêm SQL. Hãy giả sử rằng chúng ta có câu lệnh SQL sau đây để xác thực ID người dùng và mật khẩu.

Người dùng độc hại có thể nhập mã sau vào hộp văn bản ID người dùng. 'Hoặc 1 = 1 - và 1234 trong hộp văn bản mật khẩu cho phép mã hóa mô -đun xác thực

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

Kết quả cuối cùng sẽ là

  • NƠI ĐÂY,
  • “Chọn * từ người dùng WHERE user_id = '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
  • “'Hoặc 1 = 1" là một điều kiện sẽ luôn đúng

Phần mềm-"Nhận xét phần đó kiểm tra mật khẩu.

Truy vấn trên sẽ trả về tất cả người dùng cho phép, ngay bây giờ sử dụng hàm mysql_real_escape_string để bảo mật mô -đun đăng nhập của chúng tôi.

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

Mã trên sẽ xuất ra

Lưu ý & nbsp; trích dẫn đơn thứ hai đã được thoát cho chúng tôi, nó sẽ được coi là một phần của ID người dùng và mật khẩu won được nhận xét.

PHP MD5 và PHP SHA1

alert('Your site sucks!');";

echo "

My Commenting System

"; echo $user_input; ?>
0

MD5 là từ viết tắt của Tin nhắn Digest 5 và SHA1 là từ viết tắt của Thuật toán Hash Secure 1. Cả hai đều được sử dụng để mã hóa các chuỗi. Khi một chuỗi đã được mã hóa, nó rất tẻ nhạt để giải mã nó. MD5 và SHA1 rất hữu ích khi lưu trữ mật khẩu trong cơ sở dữ liệu. Mã dưới đây cho thấy việc triển khai MD5 và SHA1

Giả sử bạn đã lưu tệp băm.php trong thư mục Phptuts, duyệt đến URL

Như bạn có thể thấy từ các băm trên, nếu kẻ tấn công có quyền truy cập vào cơ sở dữ liệu của bạn, họ vẫn sẽ không biết mật khẩu để họ đăng nhập.

  • Bản tóm tắt
  • Bảo mật đề cập đến các biện pháp được đưa ra để bảo vệ một ứng dụng khỏi các cuộc tấn công tình cờ và độc hại.
  • Chức năng Strip_tags được sử dụng để xóa các thẻ như khỏi dữ liệu đầu vào
  • Chức năng Filter_VAR xác nhận và khử dữ liệu đầu vào PHP
  • MySQL_REAL_ESCAPE_STRING được sử dụng để vệ sinh câu lệnh SQL. Nó loại bỏ các ký tự độc từ các câu lệnh