PHP インジェクションの安全仕様

WBOY
リリース: 2016-06-21 08:57:29
オリジナル
905 人が閲覧しました

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)."")

文字タイプの場合は、addslashes() を使用してフィルターし、次に「%」と「_」をフィルターします。

$search=addslashes($search);

$search=str_replace("_","_",$search);
$search=str_replace("%","%",$search) );
もちろん、PHP の一般的なアンチインジェクション コードを追加することもできます:
/***************************

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 ファイル ;以上です
**************************/

さらに、管理者のユーザー名とパスワードは md5 で暗号化されているため、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 {} ;



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!