PHP プログラミング関数 safety_PHP チュートリアル
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”) //Put $cfg_dir パスの Site_${site}.php が含まれています
...
$cfg_dir ディレクトリの有無に関係なく、$site 変数をまったくチェックしないため、$site 変数を自然に使用できます。変数 $site を指定してリモート ファイルを呼び出すことも、ローカル ファイルにすることもできます。指定したファイルに php ステートメントを書き込むと、この
列のように 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 にはフィルタリングがありません。ファイル送信として指定されている場合、元のコードが漏洩しました。このような。
$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%20-la または /prod.php?argv[1]=|cat%20/etc/passwd
(ここでの区切り文字 | は、UNIX パイプ パラメーターです。複数のコマンドを実行します。)
この時点で、一般的なタイプの脆弱性について少し知っておく必要があります。
したがって、サーバー側の設定だけに頼るのではなく、バックグラウンド プログラムに注意を払うことが最善です。一般的には、サーバー経由でサイトをセットアップする方が良いでしょう。しかし、データベースを使用した多くの操作は、制御するのがそれほど簡単ではありません。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。
