海外のさまざまなバグトラックによくアクセスすると、その半分以上が SQL インジェクション、XSS、パス開示、リモート コマンド実行などのスクリプトに関連していることがわかります。それらを読んだ後、彼らの目的はブロイラーを捕まえることだけですか? Webセキュリティをやりたい人は、Webセキュリティを使って学ぶのが一番良いのですが、根本を考えると、私たちが求めているのは魚ではなく釣りです。中国では、さまざまな PHP プログラムのバージョン 1.0 とバージョン 2.0 が雨後の筍のように現れていますが、誰もがいくつかの有名な cms、フォーラム、ブログ プログラムに注目しており、それらの未知のプログラムに注目している人はほとんどいません。ますます多くの PHP プログラマーや Web マスターにとって、サーバーの要塞設定に依存することに加えて、PHP プログラム自体のセキュリティを理解する必要があります。
PHP のセキュリティはインジェクションとクロスサイトに過ぎないと言う人もいますが、それは完全に間違っています。もしこれが事実であれば、magic_quotes_gpc またはサーバーの一部のセキュリティ設定により、私たちは生き残ることができなくなります。今日はインジェクションやクロスサイトについて話したいのですが、php プログラムのセキュリティの詳細について話します。それでは本題に入りましょう。
一部の機能のフィルタリングに注意してくださいinclude()、require()、fopen()、fwrite()、readfile()、unlink()、eval() およびそのバリアント関数など、いくつかの関数はプログラムで頻繁に使用されます。これらの機能は非常に実用的であるため、より注意を払う必要があります。 :)
1.include()、require()、fopen()、include_once()、require_once() はすべてリモートでファイルを呼び出すことができます。その害については、Google で検索するとよくわかります。含まれている変数については保証がありません。フィルタリングが完了すると、任意のファイルを呼び出しに含めることができます。たとえば、print.php を見てください
...
if (empty ($bn) ) { //変数 $bn が空かどうかを確認します
include ("$cfg_dir/site_${site}.php"); //site_${site}.php をパス $cfg_dir に含めます
...
$cfg_dir ディレクトリが存在するかどうかに関係なく、$site 変数をまったくチェックしないため、$site 変数を自然に使用できます。変数 $site を指定してリモート ファイルを呼び出すことも、ローカル ファイルを指定することもできます。すると、次のように、PHP ステートメントを含むファイルがインクルードされて実行されます。
ファイルディレクトリをリストする
これは、phpwind や bo-blog の以前の脆弱性と同様に、いくつかの管理者ファイルを含めて権限を昇格するように拡張することもできます。 php.ini のallow_url_fopen を off に設定してファイルのリモート使用を禁止し、open_base_dir を使用してディレクトリ外のファイルの使用を禁止することに加えて、どのファイルのみを含めることができるかを事前に宣言する必要もあります。ここでは詳細に立ち入りません。
2.fopen()、file()、readfile()、openfile() なども特に注意を払う必要がある領域です。関数自体はファイルを開くだけですが、変数のフィルタリングが徹底されていないとソースコードが漏洩してしまいます。このような機能テキスト フォーラムは数多くあります。
...
$articlearray=openfile("$dbpath/$fid/$tid.php"); // パス $dbpath/$fid にある $tid.php ファイルを開きます
$topic_detail=explode("|",$articlearray[0]); //区切り文字を使用して投稿の内容を読み取ります
...
これは ofstar の read.php の以前のバージョンです。 $fid と $tid を送信ファイルとして指定すると、元のコードが漏洩します。このような。
http://explame.com/ofstar/read.php?fid=123&tid=../index
$tidにはphpが付くので、indexを直接書きます。これはほんの一例ですので、見てみましょう。
3.fwrite() とそのバリアント関数にはこの種の脆弱性があります。考えてみれば、ユーザーが送信した文字がフィルタリングされていなければ、PHP バックドアを作成することは不可能ではありません。
4.unlink() 関数。少し前まで、この関数は phpwind でファイルを任意に削除するために使用されていました。もちろん、変数は任意のファイルとして指定できます。あらゆるファイルを削除できます。
5.eval()、preg_replace() 関数は、文字列が何らかの方法でフィルタリングされていない場合に何が起こるでしょうか。一言で言えば、これが使われているのをよく目にします。 eval() 原則に基づいて作成された PHP トロイの木馬ではないでしょうか?
6. system() などのシステム関数については、php.ini でシステム関数を無効にすることも良い考えですが、一部のプログラムで必要な場合は使用する必要はありません。 ?前回見た美しいphpの写真アルバムのように。さらに、popen()、proc_open()、および proc_close() 関数には特別な注意を払う必要がありますが、コマンドの実行後に直接出力はありませんが、これはハッカーにとって有益だと思いますか?ここで、PHP は 2 つの関数、escapeshellarg() とscapeshellcmd() を提供します。これらの 2 つの関数は、システム関数呼び出し攻撃 (フィルタリング) に対抗するために使用されます。
害については、例として、某フォーラムのprod.phpを見てみましょう。
07 $doubleApp = isset($argv[1]) //変数$doubleAppを初期化します...
14 if( $doubleApp ) //if ステートメント
15{
16 $appDir = $argv[1] //$appDirを初期化します
;
17 system("mkdir $prodDir/$appDir"); // システム関数 system を使用して、ディレクトリ $prodDir/$appDir を作成します
元々は $prodDir/$appDir ディレクトリを作成するために使用されていましたが、プログラムは $argv[1] が存在するかどうかのみを検出し、$argv[1] の必要なフィルタリングが欠けているようです。
/prod.php?argv[1]=|ls -la または /prod.php?argv[1]=|cat /etc/passwd
(ここでの区切り文字 | は、複数のコマンドを実行できる UNIX パイプ パラメーターです。)
この時点で、一般的な種類の脆弱性について少し知っておく必要があります。
個性的なキャラクターに注目
特殊な文字については、「すべての文字は無効です」という格言があります。この文は海外の記事でよく使われます。すべての入力は有害です。これらの危険に対処するために、プログラマは何かを見逃すことを恐れて、大量の文字をフィルタリングすることに忙しいのです。一部のプログラマーはどうでしょうか?これらの問題はまったく注目されていないようで、常に抜け穴への扉が開かれたままになっています。さっそく、次のことを見てみましょう。
1. 実際、プログラムの最も重要な抜け穴、つまり開発者を最も心配させるのは、$ 記号の付いた変数です。抜け穴を探している人にとって、変数という言葉を理解することがすべてです。ディレクトリ トラバーサルのバグと同様に、このバグは多くの電子メール プログラムに存在します。開発者はこれを非常に慎重に検討し、
と同様にネットワーク ハード ドライブを追加したものもあります。http://mail.com/file.php?id=1&put=list&tid=1&file=./
ファイル変数を ./../ またはそれ以上に変更したらどうなるでしょうか?このようにしてディレクトリが横断されます。
2. 一部の検索バー、記事、メッセージなどにある山括弧「」(以前の phpwind 添付ファイルのクロスサイトなど)もちろん、クロスサイトの問題の場合は、山かっこ以外のものもフィルタリングする必要があります。フィルタリングするときに何かを見逃すことは心配ありませんが、フィルタリングを忘れることが心配です。
3. 傾斜バーと傾斜防止バー: / およびフィルタリングについては、Magic Forum の添付ファイルのダウンロードで漏洩した元のコードを覚えていますか?
attachment.php?id=684&u=3096&extension=gif&attach=....includesconfig.php&filename=1.gif
たとえば ../ のフィルタリングの問題に関しては、Windows ホストは ../ をフィルタリングするだけでなく .. もフィルタリングする必要があり、Windows ホストのペアは / として解析されます。SQL インジェクションと比較すると、これらの詳細、何が含まれているかを説明します。 -深さ?
4. バックティック (``) については、PHP では system() などのシステム関数と同様に、バックティックは非常に強力です。ユーザーの悪意のあるステートメントが実行されると、サーバーに損害を与えます。サーバーを適切に設定することに加えて、正直にフィルタリングする必要があると考えてください。
5. 改行文字、NULL 文字などの場合、「 ,x0B, , ,
」
http://www.bkjia.com/PHPjc/629780.html
。
セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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