(スクリプトの例)
<script>location.href=http://www.yahoo.co.jp;</script>
◆対策
< ⇒ <
“ ⇒ "に変換する。
危険なSQL文の例:
$code =“insert into table (name) value ('$_POST[name]')”;
フォーム入力から、下記が入力されると…
x’);delete from table; insert into table (name) values (‘y
上記SQL文は、下記となります。
$code = “insert into table (name) value (‘x’);delete from table;
insert into table (name) values (‘y’)";
◆対策
$myName = $_POST['name'];
$myName = addslashes($myName);
$code =“insert into table (name) value ('$myName')”;
addslashes() 関数は、引用符、二重引用符等の前にエスケープ文字を挿入します。
addslashes() 関数を使用すると入力文は、下記となります。
x\’);delete from table; insert into table (name) values (\‘y
addslashes() 関数を使用した場合のSQL文は、下記となります。
$code = “insert into table (name) value (‘x\’);delete from table;
insert into table (name) values (\‘y’)";
※)「slash」は、バックスラッシュのことで、日本語では、かわりに「\」が使われます。
・追加したスラッシュ(¥)を取り除くには、 stripslashes() を使います。
※PDOを使用すると、SQLインジェクション対策がされていますので、プログラミングで考慮する必要はありません。
対策1)拡張子を .inc.php とします。
対策2)空の index.htmlファイルを各ディレクトリーにアップします。
対策3)パスワード等が入った重要なファイルは、サーバーのドキュメント・ルート外に置きます。
(php.iniのinclude path を変更する必要があります)
文字、数字の場合: $x = "";
配列の場合: $x = array();