一般規定
ユーザーから受信したデータ
($_POST, $_GET, $_REQUEST, $_COOKIE, $_FILES)
常にチェックし、 異なる注入、XSSなどからだけでなく、入力したデータの正確性も確認します(オンラインストアがある場合)商品の数量が負の整数でないことを確認してください。
ハッカーとしての自分を想像して、あなたがサイトで何をしたかを考えてください。
SQLインジェクション
SQLインジェクション(Eng。SQLインジェクション-「SQL-invasion」)-クエリへの任意のSQLコードの導入に基づいて、データベースを操作するサイトおよびプログラムをハッキングする最も一般的な方法の1つ。 ウィキペディアで詳細を読む
それから身を守るには、以下を使用するだけで十分です:
- mysql_escape_string() -文字列とバイナリデータを保護する
- mysql_real_escape_string() -サーバーに設定されたエンコーディングに従って文字列とバイナリデータを保護します(サーバーへの接続が必要です。そうでない場合は空の結果を返します)
- intval() -整数の数値を保護するために、文字列が数字でない場合、intval()は0を返します。
- floatval() -小数値を保護するため、intval()と同じ動作
例:
$sql = "SELECT string FROM test WHERE string='".mysql_escape_string($_POST['str'])."'";
$sql = "SELECT string FROM test WHERE id='".intval($_POST['id'])."'";
Xss
XSS(Eng。Cross Site Spreading-「クロスサイトスクリプティング」)-ハッカー攻撃で使用されるコンピューターシステムの脆弱性の一種。 このような攻撃の特徴は、サーバーを直接攻撃する代わりに、クライアントを攻撃する手段として脆弱なサーバーを使用することです。 XSS攻撃は通常、攻撃者が被害者に提示する特別なURLを作成することにより実行されます。 ウィキペディアで詳細を読む
次の2つの機能を使用して、自身を保護するのに十分です。
- htmlspecialchars()-特殊文字をHTMLエンティティに変換します
- strip_tags() -すべてのタグを削除します(注意が必要です)
PHPインジェクション
PHPインジェクション(英語のPHPインジェクション)-PHPで実行されるWebサイトをハッキングする方法の1つ。サーバー側での外部コードの実行で構成されます。 ウィキペディアで詳細を読む
これは、サーバー側で任意のphpコードを実行できる場合のハッキング方法であり、初心者がユーザーから受け取った変数を渡すinclude()関数のおかげで非常に一般的です。 彼らは、コード
include($_GET['file'].".php");
ていると誤って考えています
include($_GET['file'].".php");
そのような注入から救います。 しかし、これはエラーです!!! 攻撃者は「 ya.ru/%00 」(引用符なし)をファイル変数に渡すことができるため、.php拡張子を拒否します
それから保護する簡単な方法があります:
- スラッシュ()-NULL文字(htmlでは%00と指定)、スラッシュ、引用符をエスケープします。これにより、不要なインジェクションを削除できますが、次のようにswitchステートメントを使用することをお勧めします。
switch ($_GET['file']) {
case '1':
include("hello.php");
break;
case '2':
include("bye.php");
break;
default:
break;
}
おわりに
ここでは、使用する一般的な原則について説明しました。 この記事の補足にご協力いただければ幸いです。