この記事では主に PHP の codeigniter のセキュリティ上の注意事項を紹介します。興味のある方はぜひ参考にしてください。
1. httponly
session は httponly である必要があります。そうしないと、xxs によって攻撃される可能性があります。js を使用して Cookie の session_id を取得します。 フレームワークの ci_session、長い数字、および httponly を使用する必要があります。これらはすべてデフォルトで設定されています。 ネイティブ phpsession を使用せず、ci_session を使用してください。 ci_session の数字が長くなります。 ネイティブ セッションを使用したい場合は、次のように設定する必要があります (php.ini):session.sid_length //ここで Sid の長さを長くする必要があります。デフォルトでは短すぎます
session.cookie_httponly = 1 ネイティブセッションは httponly になります。
2. phpinfo
ダンプリクエストの情報が攻撃者によって使用される可能性があるため、phpinfo ページを必ず閉じてください。クッキー情報など。3. サイト全体を強制的に https
経由でジャンプさせ、ローカル開発環境も https を備えている必要があります。メッセージのプッシュなど、一部の側面で https を使用できない場合は、新しいサイトを作成できます。4. Strictモード
session.use_strict_mode = 1
5. CSRF クロスサイト リクエスト フォージェリ
A の Cookie にはサイト example.com のセッション ID が含まれており、有効期限が切れていない状態で、B が A を誘導してこの画像をクリックさせます。この画像 A リクエストは example.com として偽装され、A のブラウザはこのリクエストに example.com の Cookie を添付し、B を通じて B に送信します。 B はこれを使用して非同期リクエストを実行します。Cookie は example.com の A のアカウントにログインします。 CI には反 CSRF メカニズムがあり、非表示の CSRF フィールドがフォームに自動的に挿入されます。次の設定を行う必要があります: application/config/config.php:$config['csrf_protection'] = TRUE;
6.
7. 再生 ユーザー名とパスワードを暗号化し、ログイン検証のためにサーバーに送信する必要はありません。攻撃者は、傍受したデータ パケットを再暗号化するだけで済みます。 . 一度操作するとログインでき、これがリプレイです。 防御策 5 および 6: 各フォームには、1 回のみ使用できる隠しランダム コード トークンが含まれています。ワンタイムトークンの実装のみを使用します: redis は期限切れと無効化の後に直接削除されます
8. 概要: ユーザーの安全なログインプロセス
基本的なセッション戦略: (1) セッションはセッションとしてのみ使用され、ブラウザを閉じると無効になります
(2) セッションの有効期間は短いほど安全です (60 秒など)。 (3) セッションの更新時間をそれに応じて変更する必要があります (例: 30 秒)。(4) セッションを保存するために Redis を設定します。設定は次のとおりです:
php.ini内:$this->input->post('a',true);
これはセッションの有効期間です。デフォルトは1440秒で、これは24分です。たとえば、60 秒に設定します。 60 秒後、クライアントの SID がサーバーの SID と一致する場合は、60 秒前にページを更新して SID を更新する必要があります。更新方法は、application/config/ で説明されています。 config.php: session.gc_maxlifetime = 60
セッションIDの更新とセッション有効期限の区別:
注:
これらの設定はセキュリティに密接に関連しているため、区別して使用する必要があります。
session.gc_maxlifetime
とはどういう意味ですか?つまり、セッションが生成されてから期限切れになり使用できなくなるまでの時間です。実際、redis を使用する場合、この値は、redis を使用して sid を保存するときに設定される時間が明確になります。に達すると、この Key-Value は削除されます。
この sess_time_to_update は、名前が示すように、更新時間です。つまり、この時間が経過すると更新されることになります。 自動的には更新されませんが、セッションにアクセスすると更新されます。 セッションを使用する場合、前回のセッションと今回のセッションの間の間隔が決定され、間隔がこの値より大きい場合、SID が更新されます。この使用法の通常のパフォーマンスでは、ページを更新するときに認証のためにセッションを読み取る必要があり、ページを更新するときに 2 回の間隔がこの時間を超えます。つまり、sid を更新することと、maxlifetime が組み合わされます。上の場合、これはリフレッシュが完了したことを意味し、その後セッションが更新され、タイマーが再起動されて新しいセッションが書き込まれます。
つまり、ページを時々更新すると、必要に応じて更新メカニズムがトリガーされ、定期的に発生する場合はセッションが期限切れになることはありません。 2 回の更新の間隔が maxlifetime を超えると、ログイン タイムアウトが表示され、セッションが失われます。これは、期限切れ後に更新しようとすると、明らかに機能せず、更新が失敗するためです。
要約すると、この maxlifetime は 2 回の更新間の時間を超えてはいけない時間を決定します。そうでないとログインがタイムアウトになり、更新は maxlifetime よりも小さくなければなりません。これは避けられません。これを超えると無効になるためです。更新期限が切れました。そしてできれば、この更新は maxlifetime の半分未満であるべきだと思います。 maxlifetime が非常に長い場合 (ユーザー エクスペリエンスを向上させることを望んでいますが、ユーザーが常にログインしてタイムアウトするのは常に良いことではありません)、更新が短く設定されていても問題ありません。セッションが盗まれたと仮定すると、短いほどリスクが高くなります。盗人がセッションを使用するときに有効期限が切れている可能性があるため、セキュリティは高くなります。
one-times-tokens:
ワンタイムトークン
上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
PHPバイパス無効化機能を使用してシステムコマンドを実行する方法
以上がPHP における Codeigniter のセキュリティ上の注意事項の詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ホットトピック









