- register_global = off
- magic_quotes_gpc = off
- display_error = off
- log_error = on
- #allow_url_fopen = off
- expose_php = off
- open_basedir =
- safe_mode = on
- disable_function = c 、escapeshellarg、escapeshellcmd ,proc_close,proc_open,dl,popen,show_source,get_cfg_var
- safe_mode_include_dir =
-
コードをコピー
2, DB SQL 前処理
mysql_real_escape_string (多くの PHPer は SQL インジェクションを防ぐために依然として addslashes に依存していますが、この方法は中国語のエンコードでは依然として問題があります。addslashes の問題は、ハッカーが一重引用符の代わりに 0xbf27 を使用できることです。0xbf27 は GBK エンコードでは有効な文字ではないため、addslashesは単なる 0xbf5c27 であり、有効なマルチバイト文字になります。0xbf5c は依然として一重引用符として扱われます)。
mysql_real_escape_string 関数を使用する場合は、正しい文字セットを指定する必要もあります。指定しないと問題が発生する可能性があります。
準備+実行(PDO)
ZendFramework では、mysql のみに使用できる mysql_real_escape_string とは異なり、DB クラスの quote または quoteInto を使用できます。
3. ユーザー入力の処理
HTMLタグを保持する必要がない場合は、次の方法を使用できます。
ストリップタグ、文字列内のすべての HTML タグを削除します
htmlspecialchars、「」、「;」、「'」文字のみをエスケープします
htmlentities、すべての HTML をエスケープします
HTML タグを保存する必要がある場合は、次のツールを検討してください。
- HTML Purifier: HTML Purifier は、PHP で書かれた標準準拠の HTML フィルター ライブラリです。
- PHP HTML Sanitizer: HTML コードから安全でないタグと属性を削除します
- htmLawed: HTML を浄化およびフィルターするための PHP コード
-
コピーコード
4、ファイルをアップロード
HTTP_POST_FILES[] 配列を使用して、is_uploaded_file 関数と move_uploaded_file 関数を使用します。また、アップロード ディレクトリの PHP 解釈機能を削除することで、ユーザーが PHP スクリプトをアップロードできないようにします。
ZF フレームワークで File_upload モジュールの使用を検討できます。
セッション、Cookie、フォームの安全な処理
コア認証には Cookie に依存しないでください。重要な情報は暗号化する必要があり、送信データはフォーム ポストの前にハッシュする必要があります。
たとえば、送信される form 要素は次のとおりです。
- input type="hidden" name=" H[年齢]" value=""/>
- POST から戻った後にパラメータを確認する
- $str = "";
- foreach ($_POST['H'] as $key=>$value) {
- $str .= $key.$value;
- }
- if($_POST['hash'] != md5($str.$secret )) {
- echo "隠しフォームデータが変更されました"; exit;
- }
-
コードをコピー
5、PHP セキュリティ検出ツール (XSS および SQL 挿入)
Wapiti - Webアプリケーションセキュリティ監査(Wapiti - コンパクトサイト脆弱性検出ツール) (SQLインジェクション/XSS攻撃検出ツール)
6、インストール/使用方法:
- apt-get install libtidy-0.99-0 python-ctypes python-utidylib
- python wapiti.py http://あなたのウェブサイトのURL/ -m GET_XSS
-
-
コードをコピー
Pixy: XSSとSQLI Scanner for PHP (Pixy - PHP ソース コード欠陥分析ツール)
インストール: apt-get install default-jdk
上記で紹介したセキュリティ対策を完全に実装できれば、PHP コードは非常に安全になります。
|