ホームページ  >  記事  >  バックエンド開発  >  PHP の基礎となる開発原則を理解する: ネットワーク セキュリティとデータ送信暗号化技術の分析

PHP の基礎となる開発原則を理解する: ネットワーク セキュリティとデータ送信暗号化技術の分析

WBOY
WBOYオリジナル
2023-09-09 19:12:26803ブラウズ

PHP の基礎となる開発原則を理解する: ネットワーク セキュリティとデータ送信暗号化技術の分析

PHP の基礎となる開発原則を理解する: ネットワーク セキュリティとデータ送信暗号化技術の分析

インターネットの急速な発展に伴い、ネットワーク セキュリティの問題はますます深刻になっています。 。 PHP 開発者にとって、ネットワーク セキュリティとデータ送信暗号化技術を理解することは非常に重要です。この記事では、PHP の基礎となる開発原則におけるネットワーク セキュリティとデータ送信の暗号化に関する知識を紹介し、読者の参考としていくつかのコード例を提供します。

ネットワーク セキュリティの観点から見ると、一般的な脅威には、ネットワーク ハイジャック、クロスサイト スクリプティング攻撃 (XSS)、クロスサイト リクエスト フォージェリ (CSRF) などが含まれます。以下では、これらの脅威に対処する方法を順番に説明します。

  1. ネットワーク ハイジャックの防止

ネットワーク ハイジャックとは、ハッカーがユーザーの機密情報を入手したり、その他の悪意のある行為を実行したりするために、ネットワーク トラフィックを傍受または改ざんすることを指します。ネットワークハイジャックを防ぐために、HTTPS プロトコルを使用して安全なデータ送信を行うことができます。 PHP は、OpenSSL 拡張機能を介して HTTPS の使用をサポートします。

次のサンプル コードは、HTTPS を使用して安全なデータ転送を行う方法を示しています。

<?php
  // 开启HTTPS协议
  $options = [
      'ssl' => [
          'verify_peer' => false, // 取消SSL证书验证,方便测试
          'verify_peer_name' => false,
      ],
  ];
  $context = stream_context_create($options);

  // 发送HTTPS请求
  $url = "https://www.example.com/api";
  $response = file_get_contents($url, false, $context);

  // 处理响应
  if ($response === false) {
      echo "请求失败";
  } else {
      echo "响应内容:" . $response;
  }
?>
  1. クロスサイト スクリプティング攻撃 (XSS) の防止
# #クロス Web サイト スクリプト攻撃とは、ハッカーがユーザーの機密情報を盗むために Web ページに悪意のあるスクリプトを挿入することを指します。 XSS 攻撃を防ぐために、ユーザー入力をフィルタリングして、悪意のあるスクリプトが含まれていないことを確認できます。

ユーザー入力をフィルターする方法を示すサンプル コードは次のとおりです:

<?php
  function filter_input($input) {
      // 使用htmlspecialchars函数过滤用户输入
      return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
  }

  // 获取用户输入的信息
  $username = filter_input($_POST['username']);
  $password = filter_input($_POST['password']);

  // 进行其他处理
  // ...
?>

    クロスサイト リクエスト フォージェリ (CSRF) の防止
クロスサイトリクエスト フォージェリとは、ハッカーがユーザーのログイン ステータスを利用してリクエストを偽造し、危険な操作を実行することを意味します。 CSRF 攻撃を防ぐために、CSRF トークンを使用してリクエストの正当性を検証できます。

以下は、CSRF トークンを使用してリクエストの正当性を検証する方法を示すサンプル コードです:

<?php
  // 生成CSRF令牌
  session_start();
  if (!isset($_SESSION['csrf_token'])) {
      $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
  }

  // 验证CSRF令牌
  function is_valid_csrf_token($token) {
      return isset($_SESSION['csrf_token']) && $token === $_SESSION['csrf_token'];
  }

  // 验证请求的合法性
  function validate_request() {
      $token = $_POST['csrf_token'];
      if (!is_valid_csrf_token($token)) {
          die("请求不合法");
      }
  }

  // 在表单中插入CSRF令牌
  function csrf_token_field() {
      return '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';
  }

  // 使用CSRF令牌验证请求
  validate_request();

  // 处理其他操作
  // ...
?>

ネットワーク セキュリティに加えて、データ送信の暗号化もデータを保証する重要な手段です。安全。一般的に使用される 2 つのデータ送信暗号化テクノロジを以下に紹介します。

#対称暗号化
  1. 対称暗号化とは、暗号化と復号化に同じキーを使用することを意味します。 PHP は、対称暗号化を実装するための openssl_encrypt 関数と openssl_decrypt 関数を提供します。

以下は、データ送信に対称暗号化を使用する方法を示すサンプル コードです。

<?php
  // 加密数据
  function encrypt($data, $key) {
      return openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $key);
  }

  // 解密数据
  function decrypt($data, $key) {
      return openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $key);
  }

  // 数据加密
  $data = "Hello, World!";
  $key = "mysecretkey";
  $encrypted = encrypt($data, $key);

  // 数据解密
  $decrypted = decrypt($encrypted, $key);

  echo "加密后的数据:" . $encrypted . "<br>";
  echo "解密后的数据:" . $decrypted;
?>

非対称暗号化
  1. 非対称暗号化とは、公開キーは暗号化に使用され、秘密キーは復号化に使用されます。 PHP は、非対称キーを生成および取得するための openssl_pkey_new 関数と openssl_pkey_get_private 関数を提供します。

以下は、データ送信に非対称暗号化を使用する方法を示すサンプル コードです:

<?php
  // 生成密钥
  $config = [
      "private_key_bits" => 2048,
      "private_key_type" => OPENSSL_KEYTYPE_RSA,
  ];
  $private_key = openssl_pkey_new($config);

  // 获取公钥
  $details = openssl_pkey_get_details($private_key);
  $public_key = $details["key"];

  // 使用公钥加密数据
  $data = "Hello, World!";
  $encrypted = "";
  openssl_public_encrypt($data, $encrypted, $public_key);

  // 使用私钥解密数据
  $decrypted = "";
  openssl_private_decrypt($encrypted, $decrypted, $private_key);

  echo "加密后的数据:" . base64_encode($encrypted) . "<br>";
  echo "解密后的数据:" . $decrypted;
?>

この記事では、PHP の基礎となる開発原則におけるネットワーク セキュリティとデータ送信暗号化に関する知識を提供します。読者の参考のために、いくつかのコード例が提供されています。読者がこの知識を学ぶことで、PHP 開発のネットワーク セキュリティ防止機能を向上させ、ユーザー データのセキュリティを保護できることが期待されます。

以上がPHP の基礎となる開発原則を理解する: ネットワーク セキュリティとデータ送信暗号化技術の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。