ホームページ >バックエンド開発 >PHPチュートリアル >高セキュリティの PHP Web サイトを作成するためのいくつかの実践的なポイント_PHP チュートリアル

高セキュリティの PHP Web サイトを作成するためのいくつかの実践的なポイント_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:37:43713ブラウズ

PHP が現在最も人気のある Web アプリケーション プログラミング言語であることは誰もが知っています。しかし、他のスクリプト言語と同様に、PHP にもいくつかの危険なセキュリティ ホールがあります。したがって、このチュートリアルでは、一般的な PHP セキュリティ問題を回避するのに役立ついくつかの実践的なヒントを見ていきます。

ヒント 1: 適切なエラー報告を使用する

一般に、開発プロセス中、多くのプログラマは常にプログラム エラー レポートを作成することを忘れます。これは大きな間違いです。適切なエラー レポートは、最良のデバッグ ツールであるだけでなく、優れたセキュリティ脆弱性検出ツールでもあるからです。アプリケーションをオンラインにする前に発生する問題を可能な限り解決します。

もちろん、エラー報告を有効にする方法はたくさんあります。たとえば、php.in 構成ファイルで、実行時に有効になるように設定できます

バグレポートを開始

リーリー
  1. エラー報告(E_ALL);

エラー報告を無効にする リーリー

    エラー報告(0);
ヒント 2: PHP の Weak 属性を使用しないでください。

OFF に設定する必要がある PHP 属性がいくつかあります。通常、これらは PHP4 に存在しますが、PHP5 では使用は推奨されません。特に PHP6 では、これらの属性が削除されました。

グローバル変数を登録する

register_globals が ON に設定されている場合、Environment、GET、POST、COOKIE または Server 変数がグローバル変数として定義されている設定と同じになります。現時点では、フォーム変数「username」を取得するために $_POST['username'] を記述する必要はありません。この変数を取得するには、「$username」だけが必要です。

register_globals を ON に設定すると、非常に便利なメリットがあるので、それを使用しないのではないかと考えているはずです。これを行うと多くのセキュリティ上の問題が発生し、ローカル変数名と競合する可能性があるためです。

たとえば、次のコードを見てください:

リーリー

if( !empty( $_POST['username'] ) && $_POST['username'] == 'test123' && !empty( $_POST['password'] ) && $_POST['password'] == "pass123 '' )
  1. {
  2. $アクセス = true
  3. }
  4. 実行時に register_globals が ON に設定されている場合、ユーザーはクエリ文字列で access=1 を渡すだけで、実行中の PHP スクリプトを取得できます。

.htaccess のグローバル変数を無効にする

リーリー

php_flag register_globals 0
  1. php.ini でグローバル変数を非アクティブ化する
リーリー

register_globals = オフ
  1. magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase などの Magic Quotes を無効にします

.htaccess ファイルに設定します

リーリー

php_flag magic_quotes_gpc 0
  1. php_flag magic_quotes_runtime 0
  2. php.iniで設定します
リーリー

magic_quotes_gpc = オフ
  1. magic_quotes_runtime = オフ
  2. magic_quotes_sybase = オフ
ヒント 3: ユーザー入力を検証する

もちろん、ユーザー入力を検証することもできます。まず、ユーザーが入力することが予想されるデータ型を知る必要があります。このようにして、ユーザーによる悪意のある攻撃をブラウザ側で防ぐことができます。

ヒント 4: ユーザーによるクロスサイト スクリプティング攻撃を回避する

Web アプリケーションでは、フォームでユーザー入力を受け入れ、結果をフィードバックするのが簡単です。ユーザー入力を受け入れる場合、HTML 形式の入力を許可すると、JavaScript が予期しない方法で侵入して直接実行される可能性があるため、非常に危険です。このような脆弱性が 1 つでもあると、Cookie データが盗まれ、ユーザーのアカウントが盗まれる可能性があります。

ヒント 5: SQL インジェクション攻撃を防ぐ

PHP は基本的にデータベースを保護するツールを提供していないため、データベースに接続するときに、以下の mysqli_real_escape_string 関数を使用できます。 リーリー

  1. $username = mysqli_real_escape_string( $GET['username'] );
  2. mysql_query( “SELECT * FROM tbl_employee WHERE ユーザー名 = ’”.$ユーザー名.“‘”);
  3. さて、この短い記事では、開発プロセス中に無視できないいくつかの PHP セキュリティ問題について詳しく説明しました。ただし、それを使用するかどうか、および使用方法を決定するのは最終的に開発者次第です。この記事があなたのお役に立てば幸いです。

記事の保存元: phpzag.com

http://www.bkjia.com/PHPjc/735148.html

本当http://www.bkjia.com/PHPjc/735148.html技術記事 PHP が現在最も人気のある Web アプリケーション プログラミング言語であることは誰もが知っています。しかし、他のスクリプト言語と同様に、PHP にもいくつかの危険なセキュリティ ホールがあります。そこで、この説明記事では...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。