ホームページ  >  記事  >  php教程  >  PHP のセキュリティ: PHP Web サイトのセキュリティを向上させる方法に関する 5 つのヒント

PHP のセキュリティ: PHP Web サイトのセキュリティを向上させる方法に関する 5 つのヒント

WBOY
WBOYオリジナル
2016-06-21 08:49:391430ブラウズ

ヒント 1: 適切なエラー レポートを使用する
一般に、Web サイトの開発プロセス中に、多くの Web プログラマーは常にプログラム エラー レポートを作成することを忘れます。適切なエラー レポートは、最も優れたデバッグ ツールであるだけではないため、これは大きな間違いです。は優れたセキュリティ脆弱性検出ツールでもあり、Web サイトをオンラインに公開する前に、遭遇する可能性のある問題を可能な限り見つけることができます。
もちろん、エラー報告を有効にする方法はたくさんあります。たとえば、php.in 構成ファイルで、
エラー報告の開始
error_reporting(E_ALL);
エラー報告の無効化
error_reporting(0);
ヒント 2: を有効にするように設定できます。 PHP の Weak 属性を使用しないでください
OFF に設定する必要がある PHP 属性がいくつかあります。通常、これらは PHP4 に存在しますが、PHP5 では使用は推奨されません。特に PHP6 では、これらの属性が削除されました。
グローバル変数の登録
register_globals を ON に設定すると、Environment、GET、POST、COOKIE または Server 変数がグローバル変数として定義されるように設定するのと同じになります。現時点では、フォーム変数「username」を取得するために $_POST['username'] を記述する必要はありません。この変数を取得するには、「$username」だけが必要です。
それでは、 register_globals を ON に設定すると、非常に便利な利点があるので、使用しないのではないかと考えているはずです。これを行うと、Web サイトに多くのセキュリティ上の問題が発生し、ローカル変数名と競合する可能性があるためです。
たとえば、次のコードを見てください:
if( !empty( $_POST['website'] ) && $_POST['website'] == 'http://www.cxybl.com ')
{
$access = true;
}
操作中に register_globals が ON に設定されている場合、ユーザーはクエリ文字列で access=1 を送信するだけで PHP スクリプトを実行できます。もう何でも。
.htaccess でグローバル変数を無効にする
php_flag register_globals 0
php.ini でグローバル変数を無効にする
register_globals = Off
magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase などの魔法の引用符を無効にする
.htaccess で設定ファイル
php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0
php.ini で設定
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
ヒント 3: ユーザー入力を検証する
もちろん、ユーザー入力を検証することもできます。まず、ユーザーが入力すると予想されるデータ型を知っておく必要があります。このようにして、ユーザーによる悪意のある攻撃をブラウザ側で防ぐことができます。
ヒント 4: ユーザーによるクロスサイト スクリプティング攻撃を避ける
Web ウェブサイトの構築では、フォームでのユーザー入力を受け入れ、結果をフィードバックするだけです。ユーザー入力を受け入れる場合、HTML 形式の入力を許可すると、JavaScript が予期しない方法で侵入して直接実行される可能性があるため、非常に危険です。このような脆弱性が 1 つでもあると、Cookie データが盗まれ、ユーザーのアカウントが盗まれる可能性があります。
ヒント 5: SQL インジェクション攻撃を防ぐ
PHP は基本的にデータベースを保護するツールを提供していないため、データベースに接続するときに、以下の mysqli_real_escape_string 関数を使用できます。
$username = mysqli_real_escape_string( $GET['username'] );
mysql_query( “SELECT * FROM tbl_employee WHERE username = ’”.$username.“‘”); この記事へのリンク http://www.cxybl.com/html/wlbc/Php/20130601/38187.html



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。