検索
ホームページバックエンド開発PHPチュートリアルPHP プログラムに存在するセキュリティの詳細_PHP チュートリアル

海外のさまざまなバグトラックによくアクセスすると、その半分以上が 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

tru​​ehttp://www.bkjia.com/PHPjc/629780.html技術記事スクリプトセキュリティの話題は尽きないようです。よく海外のさまざまなバグトラックにアクセスすると、その半分以上が SQL インジェクション、XS などのスクリプトに関連していることがわかります...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

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

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

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

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

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

セッションIDをどのくらいの頻度で再生する必要がありますか?セッションIDをどのくらいの頻度で再生する必要がありますか?Apr 23, 2025 am 12:03 AM

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

PHPでセッションCookieパラメーターをどのように設定しますか?PHPでセッションCookieパラメーターをどのように設定しますか?Apr 22, 2025 pm 05:33 PM

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

PHPでセッションを使用する主な目的は何ですか?PHPでセッションを使用する主な目的は何ですか?Apr 22, 2025 pm 05:25 PM

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

サブドメイン間でセッションをどのように共有できますか?サブドメイン間でセッションをどのように共有できますか?Apr 22, 2025 pm 05:21 PM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Safe Exam Browser

Safe Exam Browser

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

SecLists

SecLists

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