Php インジェクションのセキュリティ防止 上記のプロセスを通じて、PHP インジェクションの原理と手法を理解することができます。もちろん、対応する防止方法も開発できます。
最初は、Windows サーバーのセキュリティ設定についてはすでに説明したので、ここでは繰り返しません。主な設定は、php+mysql のセキュリティ設定です。 Linux ホストの設定。 php+mysql インジェクションを防ぐには、まず、magic_quotes_gpc を On に設定し、display_errors を Off に設定します。ID 型の場合は、コードに示すように、intval() 関数を使用して整数型に変換します。
$id=intval($id);mysql_query="select *from example where articieid='$id'"; または、次のように記述します: mysql_query("SELECT * FROM Article WHERE Articleid=".intval( $ id)."")
$search=addslashes($search);
$search=str_replace("_","_",$search);
$search=str_replace("%","%",$search) );
もちろん、PHP の一般的なアンチインジェクション コードを追加することもできます:
/***************************
説明:
渡された変数に不正な文字が含まれているかどうかを確認します
$_POST、$_GET など
機能:
抗注射
******************************/
//フィルタリングされる不正な文字
$ArrFiltrate=array("' ","; ","union");
//エラー発生後にジャンプする URL。入力しない場合は、前のページがデフォルトになります
$StrGoUrl="";
/ /配列に値があるかどうか
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=>$value){
if (eregi($value,$ StrFiltrate)){
return true;
}
}
return false;
}
// $_POST と $_GET をマージ
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$ HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $ key=>$value){
$ArrPostAndGet[]=$value;
}
}
//検証開始
foreach ($ArrPostAndGet as $key=>$value) {
if (FunStringExist($value,$ArrFiltrate)){
echo "alert(/"Neeao プロンプト、不正な文字/");";
if (empty($StrGoUrl)){
echo "history.go(-1);";
}else{
echo "window.location=/"".$StrGoUrl."/" ;";
}
終了;
}
}
?>
/***************************
checkpostandget.php という名前で保存します
次に include("checkpostandget.php") を前に追加します各 php ファイル ;以上です
**************************/
サーバーと mysql もいくつかのセキュリティ対策を強化する必要があります。
Linux サーバーのセキュリティ設定:
パスワードを暗号化するには、「/usr/sbin/authconfig」ツールを使用してパスワード シャドウ機能をオンにし、パスワードを暗号化します。
重要なファイルへのアクセスを禁止し、Linux コマンド インターフェイスに入り、プロンプトで次のように入力します:
#chmod 600 /etc/inetd.conf //ファイル属性を 600 に変更します
#chattr +I /etc /inetd. conf // ファイルの所有者が root であることを確認します
#chattr –I /etc/inetd.conf // ファイルへの変更を制限します
すべてのユーザーが su 経由で root ユーザーに変更することを禁止しますcommand
su で設定する ファイルの先頭 (/etc/pam.d/ ディレクトリ) に次の 2 行を追加します。
十分な認証 /lib/security/pam_rootok.so debug
認証が必要です/lib/security/pam_whell.so group=wheel
すべての特殊アカウントを削除
#userdel lp など ユーザーを削除
#groupdel lp など グループを削除
未使用の suid/sgid プログラムを無効にする
#find / -type f (-perm - 04000 - o –perm -02000 ) -execls –lg {} ;