検索
ホームページバックエンド開発PHPチュートリアルSQLインジェクション攻撃を防ぐ方法まとめ(1/2)_PHPチュートリアル

ここでは、編集者がウェブマスターによってまとめられた SQL インジェクション攻撃を防ぐ例と経験を共有します。このチュートリアルがすべての学生に役立つことを願っています。

1.サーバー側の設定

セキュリティ、PHP コード作成は 1 つの側面であり、PHP 構成は非常に重要です。

PHP を手動でインストールしました。PHP のデフォルト設定ファイルは /usr/local/apache2/conf/php.ini にあります。最も重要なことは、PHP をより安全に実行できるように php.ini の内容を設定することです。 PHP全体のセキュリティ設定は主にphpshellとSQLインジェクションによる攻撃を防ぐためのものです。ゆっくり説明していきます。まず、編集ツールを使用して /etc/local/apache2/conf/php.ini を開きます。他の方法でインストールした場合は、設定ファイルがこのディレクトリにない可能性があります。

(1) phpのセーフモードをオンにする

php のセーフ モードは、system()、

などの php の一部の関数を制御できる非常に重要な組み込みセキュリティ メカニズムです。

同時に、多くのファイル操作関数の権限が制御され、/etc/passwd などの特定の重要なファイルが許可されません。

ただし、デフォルトの php.ini ではセーフ モードが開かないので、セーフ モードを開いてみましょう:

セーフモード = オン

(2) ユーザーグループのセキュリティ

safe_mode がオンになり、safe_mode_gid がオフになった場合、PHP スクリプトはファイルにアクセスできますが、それは同じです

グループのユーザーもファイルにアクセスできます。

推奨設定:

safe_mode_gid = オフ

これを設定しない場合、サーバー Web サイトのディレクトリ内のファイルを操作できない可能性があります。たとえば、

ファイルを操作するとき。

(3) プログラムのホームディレクトリをセーフモードで実行

セーフ モードがオンになっているが、特定のプログラムを実行したい場合は、実行するプログラムのホーム ディレクトリを指定できます:

safe_mode_exec_dir = D:/usr/bin

通常、プログラムを実行する必要はないため、システム プログラム ディレクトリを実行しないことをお勧めします。

次に、実行する必要があるプログラムをコピーします。例えば:

safe_mode_exec_dir = D:/tmp/cmd

ただし、プログラムを実行しないことをお勧めします。その場合は、Web ディレクトリを指定してください:

safe_mode_exec_dir = D:/usr/www

(4) セーフモードでファイルを含める

一部のパブリック ファイルをセーフ モードに含める場合は、オプションを変更します:

safe_mode_include_dir = D:/usr/www/include/

実際、通常、php スクリプトに含まれるファイルはプログラム自体に記述されており、特定のニーズに応じて設定できます。

(5) PHPスクリプトがアクセスできるディレクトリを制御する

open_basedir オプションを使用して、指定されたディレクトリにのみアクセスするように PHP スクリプトを制御し、PHP スクリプトへのアクセスを回避できます

アクセスすべきではないファイルにより、phpshell の害はある程度制限され、通常は Web サイトのディレクトリのみにアクセスするように設定できます。

open_basedir = D:/usr/www

(6)危険な機能をオフにする

セーフモードがオンになっている場合、機能の禁止は必要ありませんが、安全性を考慮しております。たとえば、

コマンドを実行したり、php情報を表示したりできるsystem()を含むphp関数を実行する必要はないと考えています

phpinfo() およびその他の関数を禁止できます:

disable_functions = システム、パススルー、exec、shell_exec、popen、phpinfo

ファイルやディレクトリの操作を禁止したい場合は、多くのファイル操作を閉じることができます

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

上記は、一般的に使用されるファイル処理関数の一部を示したものにすぎません。

上記の実行コマンド関数をこの関数と組み合わせることもできます。

ほとんどの phpshell に耐えることができます。

(7) httpヘッダー内のPHPバージョン情報の漏洩を遮断する

ハッカーがサーバー内の PHP バージョン情報を取得できないようにするために、http ヘッダーの情報をオフにすることができます:

expose_php = オフ

たとえば、ハッカーが www.12345.com 80 に Telnet した場合、PHP 情報を見ることはできません。

(8) グローバル変数の登録を閉じる

PHP で送信された変数 (POST または GET を使用して送信された変数を含む) は、グローバル変数として自動的に登録され、直接アクセスできます。

これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。そのため、グローバル変数の登録オプションをオフにします。

register_globals = オフ

もちろん、これが設定されている場合は、GET によって送信された変数 var を取得するなど、適切な方法を使用して対応する変数を取得する必要があります。

その後、それを取得するには $_GET['var'] を使用する必要があります。PHP プログラマはこれに注意する必要があります。

(9) SQL インジェクションを防ぐために、magic_quotes_gpc をオンにします

SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題です。

だから気をつけてね。 php.ini に次の設定があります:

magic_quotes_gpc = オフ

これはデフォルトではオフになっています。オンにすると、ユーザーが送信した SQL クエリが自動的に変換されます。

たとえば、「 を 」に変換するなど。これは SQL インジェクションを防ぐ上で重要な役割を果たします。したがって、次のように設定することをお勧めします:

magic_quotes_gpc = オン

(10) エラーメッセージ制御

通常、php はデータベースに接続されていない場合、またはその他の状況下でエラーを表示します。一般に、エラー メッセージには php スクリプトが含まれます

前のパス情報やクエリ SQL ステートメントやその他の情報は、この種の情報がハッカーに提供された後は安全ではないため、通常はサーバーでエラー プロンプトを禁止することをお勧めします。

display_errors = オフ

エラー情報を表示したい場合は、エラー表示のレベルを必ず設定してください。たとえば、警告の上の情報のみを表示します:

error_reporting = E_WARNING & E_ERROR

もちろん、エラープロンプトをオフにすることをお勧めします。

(11) エラーログ

サーバーが実行されている理由を見つけるために、display_errors をオフにした後、エラー情報を記録することをお勧めします。

log_errors = オン

同時に、エラー ログを保存するディレクトリも設定する必要があります。ルート Apache ログも一緒に保存することをお勧めします。

error_log = D:/usr/local/apache2/logs/php_error.log

注: このファイルでは、Apache ユーザーとグループに書き込み権限を与える必要があります。

1 2

http://www.bkjia.com/PHPjc/632834.html

本当http://www.bkjia.com/PHPjc/632834.html技術記事ここでは、編集者がウェブマスターによってまとめられた SQL インジェクション攻撃を防ぐための例と経験をいくつか紹介します。このチュートリアルがすべての学生に役立つことを願っています。 1. サーバー側で設定します...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

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

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

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

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

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

PHPセッションからデータをどのように取得しますか?PHPセッションからデータをどのように取得しますか?May 01, 2025 am 12:11 AM

toretrievedatafrompsession、Startthessession withsession_start()andAccessvariablesshe $ _SessionArray.forexample:1)Startthessession:session_start()

セッションを使用してショッピングカートを実装するにはどうすればよいですか?セッションを使用してショッピングカートを実装するにはどうすればよいですか?May 01, 2025 am 12:10 AM

セッションを使用して効率的なショッピングカートシステムを構築する手順には、次のものがあります。1)セッションの定義と機能を理解します。セッションは、リクエスト全体でユーザーのステータスを維持するために使用されるサーバー側のストレージメカニズムです。 2)ショッピングカートに製品を追加するなど、基本的なセッション管理を実装します。 3)製品の量管理と削除をサポートし、高度な使用状況に拡大します。 4)セッションデータを持続し、安全なセッション識別子を使用することにより、パフォーマンスとセキュリティを最適化します。

PHPでインターフェイスをどのように作成して使用しますか?PHPでインターフェイスをどのように作成して使用しますか?Apr 30, 2025 pm 03:40 PM

この記事では、PHPでインターフェイスを作成、実装、および使用する方法について説明し、コード組織と保守性の利点に焦点を当てています。

crypt()とpassword_hash()の違いは何ですか?crypt()とpassword_hash()の違いは何ですか?Apr 30, 2025 pm 03:39 PM

この記事では、PHPのCrypt()とpassword_hash()の違いについて、パスワードハッシュの違いについて説明し、最新のWebアプリケーションの実装、セキュリティ、および適合性に焦点を当てています。

PHPのクロスサイトスクリプト(XSS)をどのように防ぐことができますか?PHPのクロスサイトスクリプト(XSS)をどのように防ぐことができますか?Apr 30, 2025 pm 03:38 PM

記事では、入力検証、出力エンコード、およびOWASP ESAPIやHTML浄化器などのツールを使用して、PHPのクロスサイトスクリプト(XSS)を防止します。

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 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 Mac版

SublimeText3 Mac版

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

SecLists

SecLists

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

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。