phpセキュリティの設定はどのように配置すればより安全になりますか?


また、現在騒いでいる壮大なSQL InjectionもPHPには多くの利用方法がありますので、安全を確保し、PHPコードの作成は一方で、PHPの配置は更に重要です。
私たちはphpハンドメイドでインストールしました。phpの標準設定ファイルは/usr/local/apphe 2/conf/php.iniにあります。私たちは主にphp.iniの内容を設定して、phpを実行してより安全になります。PHP全体の安全設定は主にphpshellとSQL Injectionの攻撃を防ぐためです。ゆっくり検討してみます。まず任意の編集ツールを使って/etc/local/apaache 2/conf/php.iniを開きます。他の方法でインストールしたら、構成ファイルはディレクトリにないかもしれません。
(1)phpのセーフティモードを開く
phpのセキュリティモードは非常に重要な埋め込みセキュリティ機構であり、いくつかのphpの関数、例えばsystem()を制御することができます。
同時に多くのファイル操作関数を権限制御しています。いくつかのキーファイルのファイル、例えば/etc/passwdも許可されていません。
しかし、デフォルトのphp.iniはセキュリティモードを開けていません。
safe_mode=on
(2)ユーザグループ安全
safeになるmodeが開いている時、safe_モデルgidがクローズされたら、phpスクリプトはファイルにアクセスできます。同じです。
グループのユーザもファイルにアクセスできます。
設定を推奨します
safe_モデルgid=off
設定しないと、サーバーのウェブサイトのディレクトリのファイルを操作できないかもしれません。例えば、必要です。
ファイルを操作する時。
(3)セキュリティモードでプログラムマスタディレクトリを実行する
セキュリティモードが開いていますが、いくつかのプログラムを実行する場合は、プログラムを実行するメインディレクトリを指定できます。
safe_モデルexec_dir=D:/usr/bin
一般的にはどのプログラムを実行する必要がありませんので、システムプログラムディレクトリを実行しないでください。ディレクトリを指してもいいです。
そして実行するプログラムをコピーします。例えば:
safe_モデルexec_dir=D:/tmp/cmd
しかし、私は更にいかなるプログラムを実行しないでくださいを勧めて、それなら私達のホームページの目次を指すことができます:
safe_モデルexec_dir=D:/usr/www
(4)セキュリティモードにはファイルが含まれています。
セキュリティモードでいくつかの公共文書を含めるなら、オプションを変更します。
safe_モデルinclude_dir=D:/usr/www/include/
基本的にはphpスクリプトに含まれているファイルはプログラム自体で作成されています。これは必要に応じて設定できます。
(5)phpスクリプトを制御してアクセスできるディレクトリ
open_を使うbasedirオプションでPHPスクリプトを制御できます。指定されたディレクトリにしかアクセスできません。PHPスクリプトのアクセスを避けることができます。
訪問すべきでないファイルはある程度phpshellの危害を制限しています。私達は普通ウェブサイトのディレクトリにアクセスするしかないように設定できます。
open_basedir=D:/usr/www
(6)危険関数を閉じる
セキュリティモードをオンにすれば、関数禁止は不要ですが、安全のために考慮します。例えば、
私達はsystem()などを含めて、そこでコマンドを実行できるphp関数を実行したり、php情報を確認できるようにしたくないと思います。
phpinfo()などの関数は、それらを禁止できます。
ディザブルfunctions=system、passthru、exec、shell_exec,popen,phpinfo
ファイルとディレクトリの操作を禁止すると、多くのファイルを閉じて操作できます。
ディザブルfunctions=chdir、chroot、dir、getcwd、opendir、readdir、scandir、fopen、unlink、delete、copy、mkdir、rmdir、rename、file、file_ゲットするcontets、fput、fwrite、chgrp、chmod、chown
以上は一般的なファイル処理関数ではなく、上の命令関数とこの関数を組み合わせてもいいです。
ほとんどのphphellを防ぐことができます。
(7)PHPバージョン情報のhttpヘッダからの漏れをクローズする
私達はハッカーがサーバーの中のphpバージョンの情報を得ることを防止するために、この情報の斜路を閉じることができます。httpヘッダの中にあります。
expose_php=Off
例えば、ハッカーがtelnet www.chinaz.com 80にいる時、PHPの情報が見えなくなります。
(8)グローバル変数の登録をオフにする
PHPに提出された変数は、POSTまたはGETを使って提出された変数を含めて、自動的にグローバル変数として登録され、直接にアクセスすることができます。
これはサーバーに対して非常に危険ですので、グローバル変数として登録させてはいけません。グローバル変数のオプションをオフにします。
レジスターglobals=Off
もちろん、このように設定すると、対応する変数を取得する際には、GETによって提出された変数varを取得するなど、合理的な方法が必要です。
じゃ、ドルを使いますGET['var']を取得しますので、このphpプログラマは注意してください。
(9)magic_を開くquot tesgpcによりSQL注入を防止します。
SQL注入は非常に危険な問題であり、小則サイトのバックグラウンドは侵入され、重さはサーバー全体が陥落し、
だから気をつけてください。php.iniに設定があります。
magic_quot tesgpc=Off
このデフォルトは閉じられています。開いたら自動的にユーザーをsqlに対するクエリーに提出して変換します。
例えば'を\'に変更するなど、sql注射を防ぐ上で重要な役割があります。だから、私達は設定を勧めます。
magic_quot tesgpc=On
(10)エラー情報制御
一般的なphpはデータベースに接続されていないか、または他の状況でエラーが発生します。一般的なエラー情報にはphpスクリプトが含まれます。
前の経路情報やクエリのSQL文などの情報は、ハッカーに提供された後は安全ではないので、一般サーバーはエラーメッセージを禁止することを提案しています。
display_errors=Off
もしあなたが間違った情報を表示するなら、警告以上の情報のみを表示するなど、エラーを表示するレベルを設定してください。
error_reporting=E_WARNING&E_ERROR
もちろん、私はやはりエラーメッセージを閉じることを提案します。
(11)エラーログ
display_を閉じることをお勧めします。errors後にエラー情報を記録することができます。サーバーの運行の原因を探しやすいです。
ロゴerrors=On
同時に間違ったログを保存するディレクトリを設定します。ルートapacheのログが一緒に存在することをお勧めします。
error_log=D:/usr/local/apache 2/logs/php_error.log
注意:ファイルにはapacheユーザーのグループと書き込み権限があることを許可しなければなりません。
MYSQLの降権運転
新しいユーザーを作成しました。たとえば、mysqlstartです。
net user mysqlstart**microsoff/add
net locagroup users mysqlstart/del
グループに属さない
MYSQLをd:\mysqlにセットすれば、mysqlstartが完全にコントロールする権限を与えます。
その後、システムサービスにMYSQLのサービス属性を設定し、ログイン属性の中からこのユーザmysqlstartを選択してパスワードを入力して確定する。
MYSQLサービスを再起動し、MYSQLは低権限で動作します。
もしwindowsプラットフォームの下で構築されたapacheなら、apacheのデフォルト運行はsystemの権限です。
これは怖いです。気持ちが悪いです。apacheに権限を下しましょう。
net user apache**microsoff/add
net locagroup users apache/del
ok.どのグループにも属さないユーザーアプリcheを作成しました。
私達はコンピュータマネージャを開けて、サービスを選んで、apacheサービスの属性をつけて、私達はlognを選んで、this accountを選んで、私達は上で創立した口座とパスワードを記入して、
apacheサービスを再起動します。ok、apacheは低権限で運行します。
実際には、各フォルダの権限を設定することによって、apacheユーザーができるようにすることができます。個々に読み書きができるユーザーをディレクトリごとに作成します。
これも現在多くの仮想ホストプロバイダの人気のある構成方法です。でも、この方法はここではかなり役不足を防ぐために使われています。