$ _GETだけでなく、$ _ POST、$ _ FILES、およびディスクやストリームから読み取るすべての入力を含む最初のルールは、常に検証する必要があります。
今、あなたの質問にもっと詳しく答えるために、あなたはこの世界に存在するいくつかのハックを持っています。いくつかお見せしましょう:
XSS注射
$ _GETなどのURLからデータを受け入れ、可能なタグを削除せずにこのデータを出力すると、サイトがXSSインジェクションまたはコードインジェクションを起こしやすくなる可能性があります。例えば:
http://myhoturl.com/?search=<script>window.location.href="http://thisisahack.com/"</script>
これはあなたのサイトにハックを出力し、人々は別のページにリダイレクトされます。このページは、資格情報を盗むためのフィッシング詐欺の試みである可能性があります
SQLインジェクション
アプリケーションにSQLを挿入することが可能です。例えば:
http://myhoturl.com/?search=%'; UPDATE users SET password=MD5('hello'); SELECT * FROM users WHERE username LIKE '%
SQLは次のようになります。
SELECT * FROM articles WHERE title LIKE '%%'; UPDATE users SET password=MD5('hello'); SELECT * FROM users WHERE username LIKE '%%';
したがって、すべてのユーザーのパスワードをHelloに更新してから、一致しないものを返します。
これは、SQLインジェクションでできることの簡単な概要です。身を守るために、mysql_real_escape_stringまたはPDO、あるいは適切なDB抽象化レイヤーを使用してください。
コードインジェクション
多くの人は、ディスクのどこかからのデータを含めて、ファイルのアップロードを許可することを好みます。例えば:
//File igotuploaded.txt
<?php echo 'helloworld'; ?>
また、URLを使用すると、ファイルを名前で含めることができます。?show = myhotfile.txt
//In this file we include myhotfile.txt
include($_GET['show']);
その人がそれを?show = ../ uploads / igotuploaded.txtに変更すると、echo'Helloworld'が実行されます。
それは危険です。
経験則...ユーザー入力を信頼しないでください。常に検証、防止、検証、修正、検証、そして再度修正してください...
幸運を