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

PHP プログラムに存在するセキュリティの詳細_PHP チュートリアル

Jul 13, 2016 pm 05:08 PM
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 までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles