あなたのPHPコードを保護する
- 主にWeb攻撃のため、OSサーバーやHTTPサーバー以外のユーザー(フォームやURLなど)からの安全なデータを確保することが重要です。
- phpコードを保護するための3つのカテゴリがあります。
データユーザーの検証
ユーザーがコンテンツをキャプチャして送信することを可能にするフォームをサイトが提供するとき、これはエントリのフォーマット(電子メールアドレス、電話番号、製品の数量)を示すのに十分ではありません。私達の期待に慣れている。 整数を考慮して、ユーザーから送信されたすべてのデータを変換します。
URLまたはフォームからデータを検証する
受信したデータのほとんどすべては、ウェブマスターが設定したURLまたはフォームからのものです。 以下のように指定するほとんどすべてのURL表示パラメータ
/index.php?rub=25
ただし、このパラメータは変更しないでください。 しかし、これは以下のように可能です。
/index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+1
- どのような種類のデータでも、URLまたはフォームを介して受信した形式が正しいかどうかを確認することが重要です。
- 同じことを検証するために関数filter_input()を使うことができます。
- たとえば、フォーマット投稿からユーザーから電子メールを受信した場合、フィールド名は電子メールとなります。 あなたは同じことで回復することができます:
$ email = filter_input(INPUT_POST、 'email'、FILTER_VALIDATE_EMAIL); if($ email){//メールアドレスのエントリは確かにメールアドレスのフォーマットです}
この関数は多くのことをフィルタリングすることができます:IPアドレス、URLなどhtmlentities()によるプロセスとしてURLを通して送信する前に文字列をエンコードすることのような修正があるかもしれません。
- いくつかのフィルタは"|"を使って組み合わせることができます。 。
- IPアドレスをIpv4形式でのみ検証するには、次の手順を実行します。
$ ip = filter_input(INPUT_GET、 'ip'、FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);
フィルタについては、次のリンクをクリックしてください。
//www.php.net/filter
URLの表示内容をスキップする
ユーザーが入力したコンテンツが画面に表示されると、それにはHTMLまたはJavaScriptコードが含まれますが、これは保護を必須にします。
コンテンツをhtmlで表示する場合は、設定をHTMLエンコードして、同等のHTMLエンティティ内のすべての文字を変換する必要があります。 以下はこのプロセスを自動化するためのphp関数です。
echo htmlentities($ _ REQUEST ['content']);
コンテンツをURLで表示する必要がある場合は、コンテンツをURLエンコードする必要があります。
PHPには、このエンコードを行うための2つの関数、urlencode()とrawurlencode()があります。 これら2つの関数の違いは、最初の関数では%20と2番目の "+"を与えて提供する領域のエンコードです。
echo '//www.website?valeur='.urlencode($_REQUEST['value']);
コンテンツをデータベースに保存する必要がある場合は、使用するデータベースサーバーで特定の役割を持つすべての文字をエスケープする必要があります。 PHPとMySQLでは、関数mysql_escape_string()は、パラメータとして渡される文字列内のすべての潜在的に有害な文字を作成します。
$ query = 'SELECT IDはどこから選択可能ですWHERE user = "'。mysql_escape_string($ _ REQUEST ['user'])。 '"';
サーバーはPHPオプションmagic_quotesで設定されていることに注意してください。ユーザーが送信したデータは自動的にバックスラッシュ(バックスラッシュ)で保護されます。 したがって、 mysql_escape_stringを保護する前に、この基本的な保護を「元に戻す」必要があります。
$ query = 'SELECT id from mytable WHERE user = "'。ストリップスラッシュ(mysql_escape_string($ _ REQUEST ['user']))。 '' ';