ホームページ  >  記事  >  バックエンド開発  >  PHPベース開発におけるセキュリティ対策の知識を詳しく解説_PHPチュートリアル

PHPベース開発におけるセキュリティ対策の知識を詳しく解説_PHPチュートリアル

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

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
#allow_url_f開く= off
expose_php = off
open_basedir =
safe_mode = on
disable_function = exec,system,passthru,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 インジェクションを防ぐために addslashes に依存していますが、この方法は中国語のエンコードでは依然として問題があります。addslashes の問題は、ハッカーが 0xbf27 を使用して一重引用符を置き換えることができることです。0xbf27 は GBK エンコードでは有効な文字ではありませんしたがって、addslashes は 0xbf5c27 を有効なマルチバイト文字に変更するだけで、その中の 0xbf5c は引き続き一重引用符とみなされます。詳細については、この記事を参照してください。 mysql_real_escape_string 関数を使用する場合は、正しい文字セットを指定する必要もあります。指定しないと、依然として問題が発生する可能性があります。

prepare +execute(PDO)
ZendFrameworkは、mysqlのみに使用できるmysql_real_escape_stringとは異なり、DBクラスのquoteまたはquoteIntoを使用できます。

ユーザー入力の処理
HTMLタグを保持する必要がない場合は、次のメソッド
strip_tagsを使用して、文字列
htmlspecialchars内のすべてのHTMLタグを削除できます(「<」、「>」、「のみ) ;"、"'" 文字
htmlentities をエスケープ、すべての HTML をエスケープ
HTML タグを保持する必要がある場合は、次のツールを検討できます:

コードをコピー コードは次のとおりです:
HTML Purifier: HTML Purifier は、PHP で書かれた標準準拠の HTML フィルター ライブラリです。
PHP HTML Sanitizer: HTML コードから安全でないタグと属性を削除します
htmLawed: 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

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