Hướng dẫn which method is more secure to send data in php? - Phương pháp nào an toàn hơn để gửi dữ liệu trong php?

Tôi cần chuyển một vài giá trị bằng biểu mẫu Phương thức POST cho trang web của bộ xử lý thanh toán khác. Các giá trị đó là một cái gì đó giống như các mã thông báo được tạo trên tài khoản của tôi và hiện tôi đang sử dụng biểu mẫu cơ bản với loại đầu vào = "ẩn" trên các giá trị đó. Và cũng có một biến được mã hóa bằng SHA1. Nhưng những gì tôi quan tâm là bảo mật của nó, bởi vì loại = "ẩn", có thể được nhìn thấy trong HTML. Cách chính xác để làm điều này trong trường hợp này và nói chung tôi nên sử dụng những gì? Tôi rất mới với điều này, vì vậy mọi sự giúp đỡ sẽ được đánh giá cao.

Đoạn mã:

   

  
  

hỏi ngày 29 tháng 4 năm 2017 lúc 4:25Apr 29, 2017 at 4:25

Nếu bạn muốn bảo vệ dữ liệu được truyền khỏi mắt, thì câu trả lời sẽ không được tìm thấy trong PHP hoặc HTML, nhưng trong chính máy chủ web.

Theo mặc định, dữ liệu giữa trình duyệt và máy chủ nằm trong văn bản đơn giản. Ngay cả dữ liệu nhị phân được mã hóa thành văn bản đơn giản và được giải mã ở đầu kia.

Cách duy nhất để bảo mật truyền của bạn là sử dụng HTTPS làm giao thức của bạn.

Điều này đòi hỏi những điều sau đây:

  • Chứng chỉ HTTPS. Bạn có thể lấy chúng từ nhiều nơi khác nhau, chẳng hạn như Geotrust. Bạn cũng có thể nhận chúng từ nhiều bên thứ ba như Godaddy hoặc name.com. Nếu bạn có thể quản lý nó, bạn cũng có thể nhận chúng miễn phí bằng LetSenCrypt.
  • Giấy chứng nhận cần được cài đặt. Nếu bạn đang ở trên một máy chủ được lưu trữ, bạn sẽ cần tổ chức việc này với họ.
  • Trong các liên kết và URL của bạn, hãy sử dụng https:// thay vì mặc định http://.

Giao tiếp được mã hóa giữa máy chủ và trình duyệt bằng phương thức mã hóa biến làm cho việc đánh chặn chủ yếu là không thực tế và lãng phí thời gian. (Tất nhiên không có đảm bảo tuyệt đối).

Liên quan đến phần còn lại của mã hóa của bạn, chỉ cần tiếp tục và làm điều đó bình thường. Sau khi thiết lập, mã hóa là tự động và trong suốt.

Đã trả lời ngày 29 tháng 4 năm 2017 lúc 4:39Apr 29, 2017 at 4:39

Hướng dẫn which method is more secure to send data in php? - Phương pháp nào an toàn hơn để gửi dữ liệu trong php?

ManngomanngoManngo

12.2k9 Huy hiệu vàng72 Huy hiệu bạc92 Huy hiệu Đồng9 gold badges72 silver badges92 bronze badges

Nếu bạn chỉ muốn ẩn dữ liệu của mình với người dùng, bạn có thể sử dụng các phiên trong PHP.

Nếu bạn cũng muốn bảo mật dữ liệu của mình từ ISP thì hãy đọc câu trả lời của @manngo. Anh ấy giải thích mọi thứ.

Đã trả lời ngày 29 tháng 4 năm 2017 lúc 4:43Apr 29, 2017 at 4:43

Bài đăng này cũng có sẵn trong các ngôn ngữ sau: Bồ Đào Nha.

Trong bài viết này, chúng tôi sẽ đề cập đến hai phương thức yêu cầu: các phương thức GET và POST, để gửi và nhận dữ liệu từ biểu mẫu HTML bằng PHP. Ngoài ra, chúng tôi sẽ kiểm tra các vấn đề phổ biến nhất liên quan đến bảo mật thông tin, chẳng hạn như kịch bản chéo trang (XSS) và tiêm SQL, và cách giải quyết chúng với sự khử trùng đầy đủ.

Hãy bắt đầu với lý thuyết: những gì nhận được và đăng yêu cầu, và chúng khác nhau như thế nào? - Nếu bạn muốn, bạn có thể bỏ qua phần tiếp theo, nơi chúng tôi sẽ bắt đầu với việc thực hành.

Hiểu các phương pháp GET và POST

Giao thức chuyển siêu văn bản (HTTP) được phát triển như một giao thức để phục vụ việc truyền tài liệu và hoạt động như một trung gian giữa các trình duyệt Internet và máy chủ web. Bạn đã quen với việc đọc nó trong các địa chỉ của các trang web - cũng như anh trai của nó, HTTPS, một phiên bản được mã hóa an toàn hơn (do đó là S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S).

Nói cách khác, HTTP là một giao thức phục vụ như một cây cầu trên mạng: nó thu thập một yêu cầu từ trình duyệt Internet; gửi nó đến máy chủ; chờ đợi một câu trả lời; Và cuối cùng, nó trả lại thông tin mới cho trình duyệt.

Nói chung, các yêu cầu này giữ một số siêu dữ liệu trong tiêu đề của họ, có chứa các thông báo được sử dụng để thực hiện một số hành vi nhất định trên máy khách hoặc trên máy chủ. Ngoài ra, các yêu cầu HTTP có thể giả sử các mô hình khác nhau.

Các loại yêu cầu HTTP được sử dụng nhiều nhất là nhận và đăng, nhưng có các loại khác trong đặc điểm kỹ thuật của chúng, chẳng hạn như PUT, HEAD,

POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
0,
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
1 và
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
2. Đối với các mục đích của bài viết này, chúng tôi sẽ chỉ tập trung vào hai phổ biến nhất.

Yêu cầu nhận

Phương thức Get yêu cầu được sử dụng khi bạn muốn lấy dữ liệu từ một nguồn hoặc tài nguyên cụ thể. Nó chỉ nên được sử dụng để truy xuất dữ liệu, vì chuỗi truy vấn của nó được gửi và hiển thị tại URL, ví dụ:

POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
3.

Khi chúng tôi chèn URL này vào trình duyệt, chúng tôi đang yêu cầu máy chủ YouTube cho một tài nguyên cụ thể: để lấy dữ liệu từ video

POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
4 được xác định là
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
5. Ngay khi máy chủ trả về yêu cầu, giao thức HTTP sẽ cho trình duyệt biết cách hiển thị video, trong ví dụ này, video chính thức cho bài hát Boh Bohemian Rhapsody, bởi ban nhạc của Nữ hoàng Anh.

Lưu ý rằng trong ví dụ của chúng tôi, tham số thứ hai của yêu cầu GET, tham số

POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
6, thông báo thời gian bắt đầu mà chúng tôi mong đợi trong phản hồi của chúng tôi, trong trường hợp này, từ 3 phút và 5S. Các tham số
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
4 và
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
6 được phân tách bằng ký tự
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
9, chỉ ra giao thức HTTP trong đó các cặp khóa-khóa-giá trị của các tham số này bắt đầu và kết thúc. Vì vậy, máy chủ biết chính xác rằng bạn tìm kiếm video

<form method="GET" id="webform" name="webform" action="target.php">
form>
0 tại thời điểm

<form method="GET" id="webform" name="webform" action="target.php">
form>
1.

Nhận các yêu cầu thường bị giới hạn về chiều dài - đối với hầu hết các trình duyệt, nó lên tới 8 kb hoặc 8192 byte trong URI - và vì chúng chỉ phục vụ để yêu cầu dữ liệu, chúng không thể sửa đổi nó. Ngoài ra, chúng có thể được lưu trữ trong bộ đệm, trong lịch sử của trình duyệt và cả trong các dấu trang. Đó là lý do tại sao bạn không bao giờ nên sử dụng nó để gửi dữ liệu nhạy cảm, chẳng hạn như số an sinh xã hội và mật khẩu người dùng.never use it to send sensitive data, such as Social Security Numbers and user passwords.

Tuy nhiên, một số nhà phát triển bỏ qua nó và phơi bày dữ liệu cá nhân và nhạy cảm của mọi người trên internet. Ở Brazil, do Luật bảo vệ dữ liệu cá nhân chung (LGPD), thực tiễn này có thể gây ra những bất tiện lớn, chẳng hạn như các hình phạt nghiêm trọng đối với công ty hoặc đối với những người vận hành và quản lý dữ liệu này, khi xảy ra rò rỉ. Vì vậy, thực tiễn tốt nhất là không bao giờ gửi dữ liệu cá nhân nhạy cảm thông qua phương thức GET.never send sensitive personal data via the GET method.

Yêu cầu bài viết

Phương thức yêu cầu POST được sử dụng để gửi dữ liệu đến máy chủ, để cập nhật hoặc tạo tài nguyên mới.

Không giống như phương thức GET, phương thức POST không hiển thị thông tin tại địa chỉ URL. Trong trường hợp này, dữ liệu được truyền trong thân yêu cầu HTTP, như sau:

POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ

Trong ví dụ này, chúng tôi đang thông báo cho máy chủ


<form method="GET" id="webform" name="webform" action="target.php">
form>
2 rằng chúng tôi sẽ thực hiện yêu cầu phương thức

<form method="GET" id="webform" name="webform" action="target.php">
form>
3 đến địa chỉ

<form method="GET" id="webform" name="webform" action="target.php">
form>
4, sử dụng các thông số kỹ thuật của giao thức

<form method="GET" id="webform" name="webform" action="target.php">
form>
5. Chúng tôi cũng chỉ ra rằng có 42 thông tin ký tự (

<form method="GET" id="webform" name="webform" action="target.php">
form>
6), theo định dạng nội dung

<form method="GET" id="webform" name="webform" action="target.php">
form>
7 tiêu chuẩn, có giá trị là

<form method="GET" id="webform" name="webform" action="target.php">
form>
8. Cuối cùng, thông tin của chúng tôi nằm ở dòng dưới cùng, chứa 3 tham số:

<form method="GET" id="webform" name="webform" action="target.php">
form>
9,

html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
0 và
POST /update/webform.php HTTP/1.1
Host: youtube.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
user=Stevie&playlist=British&v=fJ9rUzIMcZQ
4.

Thông tin di chuyển trong phần thân của yêu cầu HTTP có thể bị chặn bởi các tác nhân xấu. Sau đó, thực tiễn tốt nhất là thực hiện các lần truyền này bằng cách sử dụng mã hóa, thông qua giao thức HTTPS, do đó, việc họ đọc thông tin này khó khăn hơn.

Giả sử máy chủ YouTube đã nhận ra yêu cầu của chúng tôi và địa chỉ này là hợp lệ. Trong ví dụ của chúng tôi, video được thông báo mà chúng tôi nhận được trước đó, sẽ được thêm vào danh sách phát


html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
2 của người dùng được xác định là

html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
3.

Lưu ý rằng đây là một yêu cầu một lần, không có khả năng được lặp lại. Theo quy định, phương thức POST, không giống như GET, không được lưu trữ trong bộ đệm hoặc trong lịch sử trình duyệt của khách hàng, cũng như không thể lưu trong các dấu trang. Các yêu cầu POST không có hạn chế về kích thước của tin nhắn, cho phép chúng tôi gửi các bài viết hoàn chỉnh, chẳng hạn như bài viết này, thông qua mẫu HTML điện tử chẳng hạn. Ngoài ra, phương pháp POST hỗ trợ nhiều loại


<form method="GET" id="webform" name="webform" action="target.php">
form>
7, bao gồm các tài liệu nhị phân, chuỗi và số.

Phương pháp bài thường được ưa thích hơn get. Tuy nhiên, có những tình huống trong đó chúng tôi nên bao gồm dữ liệu yêu cầu trong URL địa chỉ: ví dụ: trong các biểu mẫu tìm kiếm hoặc bằng cách hiển thị tài liệu và video, vì chúng tôi muốn khách hàng có thể lặp lại nó dễ dàng và truy cập lại địa chỉ thông qua lịch sử của trình duyệt.

Tạo các biểu mẫu với HTML và PHP

Bây giờ chúng tôi đã hiểu cách các phương thức GET và POST hoạt động trong lý thuyết, chúng ta hãy đi đến các thực tiễn: Hãy tạo biểu mẫu HTML và để gửi và nhận thông tin bằng PHP.

Có một số cách để làm điều này, như thông qua JavaScript và Ajax, nơi người dùng không phải làm mới trang, vì chúng tôi đang truyền thông tin không đồng bộ. Đối với các mục đích của bài viết này, chúng tôi sẽ chỉ tập trung vào các công nghệ HTML và PHP.

Chèn biểu mẫu trên trang

Bước đầu tiên để tạo trang web của chúng tôi là thông báo cấu trúc của phần tử


html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
5 sẽ chứa các trường nơi người dùng nhập dữ liệu, như thế này:


<form method="GET" id="webform" name="webform" action="target.php">
form>

Trong đoạn này, chúng tôi đang sử dụng phương thức GET, được xác định trong


html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
6, để gửi thông tin sẽ được chèn vào biểu mẫu, tên được xác định trong

html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
7, đến trang đích (

html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
8).

Chèn các trường vào biểu mẫu

Bước tiếp theo là chèn các trường hoặc


html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
9 vào biểu mẫu của chúng tôi, nơi người dùng có thể nhập các giá trị. Hãy cập nhật tệp nguồn của chúng tôi như thế này:


html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>

Chúng tôi đã chèn 3 trường, được xác định bởi thẻ HTML



    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
0 và cũng là 1 nút gửi dữ liệu của biểu mẫu, sử dụng


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
1.

Chúng tôi cũng thêm nhãn vào các trường văn bản, sử dụng các thẻ



    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
2. Lưu ý rằng mỗi giá trị trên các thuộc tính


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
3, trên mỗi phần tử


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
4 tương ứng với thuộc tính


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
5 của một trường

html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
9, như thế này:


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
7 đề cập cụ thể đến trường chứa thuộc tính


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
8 tương ứng và ngược lại.

Có thể chèn các giá trị được xác định trước vào các trường, thêm dữ liệu tương ứng với thuộc tính



    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
9 trong mỗi phần tử HTML


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
0.

Cuối cùng, thuộc tính



    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
1 trong mỗi trường


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
0 sẽ được sử dụng để thu được các giá trị được người dùng chèn vào trường tương ứng khi chúng ta chuyển sang PHP.

Kết quả cuối cùng, được hiển thị trong trình duyệt của máy khách, sẽ trông như thế này:

Hướng dẫn which method is more secure to send data in php? - Phương pháp nào an toàn hơn để gửi dữ liệu trong php?

Đọc dữ liệu với PHP

Sau khi hoàn thành biểu mẫu HTML của chúng tôi, chúng tôi có thể chuyển sang bước tiếp theo. Hãy xác định các yếu tố của trang đích bằng PHP.

Mã nguồn bên dưới, được chèn vào tệp



    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
3, sẽ được thực hiện bởi PHP ngay khi người dùng gửi dữ liệu biểu mẫu mà chúng tôi đã tạo trước đó.



    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>

Lưu ý rằng chúng tôi sử dụng biến SuperGlobal



    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
4 để có được các giá trị được người dùng chèn vào, được truyền bằng giao thức HTTP. Đối với mỗi trường


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
0 mà trước đây chúng tôi đã tạo trên biểu mẫu, thuộc tính


    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
1 tương ứng của nó phải được thông báo trong biến SuperGlobal. Ví dụ: trường


    // Prints the values of each field on the page
    echo(
    "The user identified as " . $_GET["iduser"] . " added the video whose ID is " . $_GET["v"] . " to the playlist " . $_GET["idplaylist"] . "."
    );
?>
0 hiển thị thuộc tính


    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
8 có thể được tìm thấy trong PHP bằng cách sử dụng


    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
9.

PHP có một số biến SuperGlobals bản địa, chẳng hạn như https://0, https://1 và https://2. Hãy nhớ rằng chúng tôi sử dụng chúng theo phương thức yêu cầu HTTP mà chúng tôi đang sử dụng để truyền dữ liệu, do đó, nó phải tương ứng với những gì được xác định trong thuộc tính https://3 của phần tử


html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
5 của chúng tôi.according to the HTTP request method that we are using for data transmission, so it must correspond to what been defined in the https://3 attribute of our

html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electronic formtitle>
head>
<body>
    <form method="GET" id="webform" name="webform" action="target.php">
        <label for="iduser">User ID:label>
        <input type="text" id="iduser" name="iduser"> <br />

        <label for="idplaylist">Playlist ID:label>
        <input type="text" id="idplaylist" name="idplaylist"> <br />

        <label for="v">Video ID:label>
        <input type="text" id="v" name="v" value="fJ9rUzIMcZQ"> <br />

        <button type="submit">Send databutton>
    form>
body>
html>
5 element.

Biến Superglobal https://2 của PhP có thể mang thông tin từ cả hai phương pháp https://0 và https://1, ngoài bất kỳ cookie nào được truyền trong https://8. Tuy nhiên, việc sử dụng nó không phải lúc nào cũng được khuyến nghị: Thực tiễn tốt nhất là các nhà phát triển biết các phương thức được sử dụng cho đầu vào và đầu ra di chuyển trên máy chủ của họ, để tránh các lệnh chung hơn.is not always recommended: the best practice is that developers know the methods used for inputs and outputs traveling on their server, in order to avoid more generic commands.

Sau đó, chúng tôi tách các chuỗi và các biến trong PHP với ký tự https://9, do đó, mỗi đoạn văn bản được chứa giữa các ký tự http://0, ở đầu và cuối câu. Cuối cùng, chúng tôi in trên màn hình của người dùng toàn bộ biểu thức trong dấu ngoặc đơn với hàm http://1.

📝 Học bằng cách làm

Bạn có nhận thấy rằng địa chỉ URL trên trang



    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>
3 hiển thị các giá trị được nhập trong trang nguồn không?

Kiểm tra số 1: Viết lại mã nguồn của biểu mẫu chúng tôi đã mã hóa, bằng cách sử dụng một phương thức yêu cầu khác, để thông tin vẫn an toàn khỏi việc đọc của người nghe lén và những người trái phép. Sau khi bạn hoàn thành, bạn có thể kiểm tra câu trả lời cuối cùng. Rewrite the source code of the form we coded, using another requisition method, so that the information stays safe from reading by eavesdroppers and unauthorized people. After you finish, you can check the final answer.

Tăng bảo mật hình thức HTML

Hình thức HTML của chúng tôi cuối cùng đã được thực hiện! Tuy nhiên, chúng tôi có thể tăng tính bảo mật của trang của chúng tôi, bảo vệ việc đọc thông tin trên PHP.

Đây là bước cuối cùng của chúng tôi. Chúng tôi sẽ thêm một lớp bảo mật bổ sung, mặc dù cơ bản, để ngăn PHP thực thi các lệnh tại thời điểm nó nhận và hiển thị các giá trị được báo cáo bởi máy khách.

Quy tắc trong lập trình là không bao giờ tin tưởng một cách mù quáng các giá trị được người dùng chèn vào. Thật không may, nhiều tác nhân xấu đã khai thác các vấn đề kỹ thuật trên các trang web để thu thập thông tin nhạy cảm hoặc gây sát thương cho các máy chủ bằng cách thực hiện các lệnh bất ngờ. Vì những lý do đó, điều rất quan trọng là bạn bảo vệ, trước, các yêu cầu được truyền và máy chủ, nếu tất cả, nếu lợi ích của người dùng là hợp pháp, chúng cũng sẽ được hưởng lợi từ việc tăng cường bảo mật ứng dụng của bạn.never blindly trust the values inserted by the user. Unfortunately, many bad agents have exploited technical problems on websites in order to collect sensitive information, or to damage servers by executing unexpected commands. For those reasons, it is very important that you protect, beforehand, the transmitted requests and the server, after all, if the users' interests are legitimate, they will also benefit from the increased security of your application.

Kỹ thuật lọc và biến đổi các giá trị được người dùng nhập vào thành các chuỗi đơn giản hơn được gọi là vệ sinh. Theo mặc định, PHP có một tập hợp các chức năng gốc giúp chúng tôi ở bước này, chẳng hạn như sau:sanitization. By default, PHP has a collection of native functions that helps us on this step, such as the following:

  • http://3 - Chuyển đổi các ký tự đặc biệt, chẳng hạn như http://4, thành các thực thể HTML;
  • http://5 - Tương tự như phần trước, nhưng nó chuyển đổi số lượng ký tự lớn hơn thành các thực thể HTML;
  • http://6 - Xóa các thẻ HTML và PHP khỏi một chuỗi, chẳng hạn như siêu liên kết và nhận xét.

Khi chúng tôi sử dụng quá trình vệ sinh đầy đủ, ngay khi máy chủ nhận được thông tin không chính xác - ví dụ: http://7 - nó sẽ được chuyển đổi, đã khử trùng và không nên hiển thị thông báo cảnh báo trên màn hình của người dùng trong trường hợp này.

💡 Lưu ý rằng, trong ví dụ của chúng tôi, chúng tôi sử dụng một tập lệnh vô hại, theo lý thuyết - nhiều nhất, không thoải mái cho người dùng. Tuy nhiên, điều quan trọng là phải nhắc lại: bạn phải luôn bảo vệ và vệ sinh thông tin. Trong các trường hợp khác, một tác nhân xấu có thể truyền các tập lệnh độc hại-kỹ thuật này được gọi là kịch bản chéo trang hoặc XSS-hoặc thực hiện các lệnh có hại cho cơ sở dữ liệu (thường được gọi là tiêm SQL).always protect and sanitize information. In other cases, a bad agent could transmit malicious scripts — this technique is known as Cross-Site Scripting, or XSS — or execute harmful commands to the database (usually called SQL Injection).

Hãy chỉnh sửa mã nguồn của trang của chúng tôi, bằng cách thêm một trong các chức năng vệ sinh này. Mã cuối cùng của chúng tôi sẽ trông như thế này:



    // Prints the values of each field on the page
    echo(
    "The user identified as " . htmlspecialchars($_GET["iduser"], ENT_QUOTES, "UTF-8") . " added the video whose ID is " . htmlspecialchars($_GET["v"], ENT_QUOTES, "UTF-8") . " to the playlist " . htmlspecialchars($_GET["idplaylist"], ENT_QUOTES, "UTF-8") . "."
    );
?>

Kết quả cuối cùng, được hiển thị trong trình duyệt, sẽ trông giống như hình dưới đây:

Hướng dẫn which method is more secure to send data in php? - Phương pháp nào an toàn hơn để gửi dữ liệu trong php?

📝 Học bằng cách làm

Bạn đã bao giờ nhận thấy rằng phần lớn các trang web và công cụ tìm kiếm sử dụng tham số http://8 để truyền dữ liệu được người dùng chèn vào các yêu cầu truy vấn đến máy chủ?

Kiểm tra số 2: Tạo biểu mẫu tìm kiếm, sử dụng HTML và PHP, chứa ít nhất 1 trường văn bản và 1 nút để gửi dữ liệu, để URL địa chỉ trên trang đích hiển thị tham số http://8 (hoặc truy vấn trực tuyến). Nó sẽ nhận được các giá trị, được vệ sinh, được người dùng chèn vào trường văn bản. Sau khi bạn hoàn thành, bạn có thể kiểm tra câu trả lời cuối cùng. Create a search form, using HTML and PHP, that contains at least 1 text field and 1 button to send the data, so that the address URL on the target page displays the http://8 (or “query”) parameter. It should receive the values, sanitized, inserted by the user in the text field. After you finish, you can check the final answer.

Sự kết luận

Vì vậy, chúng tôi đã hoàn thành! Chúng tôi đã thực hiện biểu mẫu điện tử của chúng tôi trong HTML có khả năng truyền dữ liệu qua các phương thức yêu cầu HTTP, trong trường hợp này, nhận hoặc đăng - và chúng tôi cũng hiểu cách chúng hoạt động - và gửi chúng đến trang đích được viết bằng PHP. Sau đó, nó nhận được, xử lý dữ liệu và hiển thị thông tin trên màn hình của người dùng. Ngoài ra, chúng tôi đã vệ sinh các giá trị được người dùng thông báo để tránh các vấn đề nghiêm trọng về bảo mật thông tin.

Các bước tiếp theo 🚶 🚶

Bảo mật Internet không bao giờ là quá nhiều, vì vậy luôn có một cái gì đó để học và áp dụng nhiều hơn. Để xây dựng các ứng dụng an toàn hơn, hãy chắc chắn theo dõi bài viết tiếp theo về loạt bài này và đọc chủ đề bảo mật trong hướng dẫn sử dụng PHP.

Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào về cách xây dựng các ứng dụng an toàn hơn bằng PHP, hãy chia sẻ nó trong các bình luận. 📣

Người giới thiệu

.

.

.

.

.

.

.

.

Phương pháp nào an toàn hơn Gửi dữ liệu đến máy chủ?

SFTP hoặc FTP an toàn là một trong những cách an toàn nhất để truyền dữ liệu trực tuyến. Bằng cách sử dụng các giao thức này, dữ liệu chỉ có thể được chuyển sau khi nhập tên người dùng và mật khẩu. Để sử dụng SFTP, bạn cần có quyền truy cập vào một máy chủ, có thể được mua hoặc thuê. is one of the safest ways to transfer data online. By using these protocols, data can be transferred only after entering a username and a password. In order to use SFTP, you need to have access to a server, which can be either bought or rented.

Phương pháp hình thức nào an toàn nhất?

Bảo vệ.Sinh trắc học rất nhạy cảm và gần như không thể giả mạo sinh trắc học của ai đó.Tuy nhiên, nếu một sinh trắc học bị đánh cắp, nó không thể thay đổi.Do đó, sinh trắc học có thể là một phương pháp xác thực rất an toàn, miễn là dữ liệu sinh trắc học được lưu trữ an toàn.

Cái nào an toàn hơn hoặc bài đăng?

Nhận ít an toàn hơn bài đăng vì dữ liệu đã gửi là một phần của URL.Bài đăng an toàn hơn một chút so với GET vì các tham số được lưu trữ không trong lịch sử trình duyệt cũng như trong nhật ký máy chủ web. because sent data is part of the URL. POST is a little safer than GET because the parameters are stored neither in the browser history nor in the web server logs.

Cách an toàn nhất để truyền dữ liệu riêng tư là gì?

Cách truyền dữ liệu an toàn nhất là gì?Cách tốt nhất để chuyển dữ liệu một cách an toàn là thông qua việc sử dụng khóa riêng.Đây là một cách mà khi bạn gửi tin nhắn, nó được mã hóa và giải mã bằng cách sử dụng một thuật toán cụ thể chỉ bạn và người nhận biết.through the use of a private key. This is a way that, when you send a message, it's encrypted and decrypted using a specific algorithm only you and the receiver know.