ホームページ  >  記事  >  バックエンド開発  >  PHP セキュリティ防止のヒント共有_PHP チュートリアル

PHP セキュリティ防止のヒント共有_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:23:53918ブラウズ

PHP コードのセキュリティと XSS、SQL インジェクションなどは、さまざまな Web サイト、特に XSS や SQL インジェクションの最も大きな影響を受ける領域である UGC (ユーザー生成コンテンツ) Web サイト、フォーラム、電子商取引 Web サイトのセキュリティに非常に役立ちます。ここでは、システム セキュリティと比較して、PHP のセキュリティ予防策として、ユーザーが入力するさまざまなパラメータについてより注意する必要があります

PHP コンパイル プロセスのセキュリティ
Suhosin パッチをインストールすることをお勧めします。セキュリティをインストールする必要があります

php.ini セキュリティ設定のパッチ
register_global = off
magic_quotes_gpc = off
display_error = off
log_error = on
# allowed_url_fopen = off
expose_php = off
open_basedir =
safe_mode = on
disable_function = 幹部、 system,pass thru,shell_exec ,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,get_cfg_var
safe_mode_include_dir =

DB SQL 前処理
mysql_real_escape_string (多くの PHPer は SQL インジェクションを防ぐために依然として addlashes に依存していますが、この方法には依然として問題がありますaddslashes の問題は、ハッカーが単一引用符の代わりに 0xbf27 を使用できることです。0xbf27 は GBK エンコードでは有効な文字ではないため、addslashes は 0xbf5c27 を有効なマルチバイト文字に変更するだけで、0xbf5c は依然として単一文字とみなされます。詳細についてはこの記事を参照してください。) mysql_real_escape_string 関数を使用する場合は、正しい文字セットを指定する必要もあります。指定しないと、依然として問題が発生する可能性があります。
prepare +execute(PDO)
ZendFramework は DB クラスの quote または quoteInto を使用できます。これら 2 つのメソッドは、mysql のみに使用できる mysql_real_escape_string とは異なり、さまざまなデータベースに応じて実装されます

ユーザー入力の処理
For を保持する必要はありません。 HTML タグの場合、次のメソッド

strip_tags を使用して、文字列
htmlspecialchars 内のすべての HTML タグを削除し、文字「<」、「>」、「;」、「'」のみをエスケープできます。
htmlentities とすべての HTMLエスケープ

HTML タグを保持する必要がある場合は、次のツールを検討できます:
HTML Purifier: HTML Purifier は、PHP で書かれた標準準拠の HTML フィルター ライブラリです。
PHP HTML Sanitizer: HTML コードから安全でないタグと属性を削除します。 HTML を精製およびフィルタリングするための PHP コード

ファイルをアップロードする
is_uploaded_file 関数と move_uploaded_file 関数を使用し、HTTP_POST_FILES[] 配列を使用します。また、アップロード ディレクトリの PHP 解釈機能を削除することで、ユーザーが PHP スクリプトをアップロードできないようにします。
ZF フレームワークで File_upload モジュールを使用することを検討できます

セッション、Cookie、フォームのセキュリティ処理
重要な情報は、フォームのポストの前に暗号化する必要があります。送信するフォーム要素は次のとおりです:

プログラムコード

 




POST が戻ったらパラメータを確認します

プログラムコード

コードをコピーします コードは次のとおりです:
$str = ""
foreach($_POST['H; '] as $key=>$value) {
$str .= $key.$value
}
if($_POST['hash'] != md5($str.$secret)) {
echo "隠しフォームデータが変更されました"; 終了;
}


PHP セキュリティ検出ツール (XSS および SQL 挿入)
Wapiti - Web アプリケーション セキュリティ監査 (Wapiti - コンパクトなサイト脆弱性検出ツール) (SQL インジェクション/XSS 攻撃検査ツール)
インストール・使用方法:
apt-get install libtidy-0.99-0 python-ctypes python-utidylib
python wapiti.py http://あなたのWebサイトURL/ -m GET_XSS
Pixy: XSS and SQLI Scanner for PHP (Pixy - PHP ソースコード欠陥分析ツール)
インストール: apt-get install default-jdk
リモート PHP 脆弱性スキャナー (PHP ページ欠陥自動分析、強力な XSS 検出機能)
PHPIDS - PHP 侵入検知システム

http://www.bkjia.com/PHPjc/324450.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/324450.html技術記事 PHP コードのセキュリティと XSS、SQL インジェクションなどは、さまざまな Web サイト、特に XSS や SQL インジェクションの焦点となることが多い UGC (User Generated Content) Web サイト、フォーラム、電子商取引 Web サイトのセキュリティに非常に役立ちます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。