データ暗号化は、特にインターネット上で発生する多数のトランザクションと送信される大量のデータを考慮すると、私たちの生活の中でますます重要になっています。セキュリティ対策に興味がある場合は、PHP が提供する一連のセキュリティ機能についても理解する必要があります。この記事では、アプリケーション ソフトウェアにセキュリティ機能を追加できるように、これらの機能の紹介と基本的な使用方法を説明します。
予備知識
PHP のセキュリティ機能を詳しく紹介する前に、暗号化についてまだ詳しくない読者に、暗号化に関する基本的な知識を説明するために少し時間を割く必要があります。暗号化の基本概念をすでによく理解している場合は、読み飛ばしていただいても構いません。この部分。 。
暗号動物学は、大まかに言うと、暗号化と復号化の研究と実験です。暗号化は、わかりやすいデータを理解できないデータに変換するプロセスであり、復号化は、理解できないデータを元のわかりやすいデータに変換するプロセスです。理解しにくい情報を暗号、理解しやすい情報を平文と呼びます。
データの暗号化/復号化には特定のアルゴリズムが必要です。これらのアルゴリズムは、有名なシーザー コードなど、非常に単純なものもありますが、現在の暗号化アルゴリズムは比較的複雑で、既存の方法では解読できないものもあります。
PHP暗号化機能
Windows 以外のプラットフォームの使用経験が少しある人は、crypt() に精通しているかもしれません。この関数は、一部のプレーン コードを暗号化できますが、パスワードを元のプレーン コードに変換することはできません。これは一見役に立たない機能のように見えるかもしれませんが、システム パスワードの整合性を確保するために広く使用されています。一方向暗号化されたパスワードは、第三者の手に渡ると平文に戻すことができないため、ほとんど役に立ちません。ユーザーが入力したパスワードを検証するときも、ユーザーの入力は一方向アルゴリズムを使用します。入力が保存されている暗号化されたパスワードと一致する場合、入力されたパスワードは正しい必要があります。
PHP は、crypt() 関数を使用して一方向の暗号化を完了する機能も提供します。ここで機能を簡単に紹介します:
string crypt (string input_string [, string Salt])
input_string パラメータは暗号化する必要がある文字列で、2 番目のオプションのソルトは暗号化されたパスワードに影響を与える可能性のあるビット文字列で、いわゆる事前計算攻撃の可能性をさらに排除します。デフォルトでは、PHP は 2 文字の DES 干渉文字列を使用します。システムで MD5 (MD5 アルゴリズムについては後で紹介します) を使用する場合は、12 文字の干渉文字列が使用されます。ちなみに、次のコマンドを実行すると、システムが使用する干渉文字列の長さを確認できます:
print "私のシステムソルトサイズは: CRYPT_SALT_LENGTH;
システムは他の暗号化アルゴリズムもサポートする場合があります。 crypt() は 4 つのアルゴリズムをサポートします。サポートするアルゴリズムと対応する Salt パラメーターの長さは次のとおりです。
アルゴリズムソルトの長さ
CRYPT_STD_DES 2 文字 (デフォルト)
CRYPT_EXT_DES 9 文字
CRYPT_MD5 $
で始まる12文字
CRYPT_BLOWFISH $
で始まる 16 文字
crypt() を使用してユーザー認証を実装します
crypt() 関数の例として、正しいユーザー名とパスワードを提供できるユーザーのみにディレクトリへのアクセスを制限する PHP スクリプトを作成する状況を考えてみましょう。私のお気に入りのデータベースである MySQL のテーブルにデータを保存します。 members という名前のテーブルを作成することから例を始めましょう:
mysql>CREATE TABLE メンバー (
->ユーザー名 CHAR(14) NOT NULL,
->パスワード CHAR(32) NOT NULL,
->主キー(ユーザー名)
->);
次に、次のデータがすでにテーブルに格納されていると仮定します。
ユーザー名 パスワード
クラーク・ケロD1C377lKE
ブルース ba1T7vnz9AWgk
ピーター・パルvRWsRLZ4U
これらの暗号化されたパスワードに対応する平文コードは、それぞれ kent、banner、parker です。各パスワードの最初の 2 文字に注意してください。これは、次のコードを使用してパスワードの最初の 2 文字に基づいて干渉文字列を作成したためです。
$enteredPassword.
$salt = substr($enteredPassword, 0, 2);
$userPswd = crypt($enteredPassword, $salt);
// $userPswd はユーザー名と一緒に MySQL に保存されます
Apache のパスワード応答認証構成を使用して、ユーザーにユーザー名とパスワードの入力を求めます。PHP についてはあまり知られていませんが、Apache パスワード応答システムによって入力されたユーザー名とパスワードが $PHP_AUTH_USER および $PHP_AUTH_PW I として認識されるということです。は、認証スクリプトでこれら 2 つの変数を使用します。以下のコードをよりよく理解するために、時間をかけて以下のスクリプトを注意深く読み、説明にもっと注意を払ってください:
crypt() と Apache のパスワード応答検証システムの応用
$host = "ローカルホスト";
$user = "ゾロ";
$pswd = "地獄のオドリー";
$db = "ユーザー";
// 認証を False に設定します
$authorization = 0;
// ユーザーがユーザー名とパスワードを入力したことを確認します
if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)) :
mysql_pconnect($host, $user, $pswd) または die("MySQL に接続できません
サーバー!");

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









