[PHP-users 11143] Re: フォームの変数をPostgreSQL にINSERT
Yasuo Ohgaki
php-users@php.gr.jp
Tue, 29 Oct 2002 11:28:33 +0900
大垣です。
> "Yasuo Ohgaki" <yohgaki@ohgaki.net>さん wrote:
>>安全性をチェックしてからならOkです。
>>
>># ユーザーからの入力値はどのみち全部チェックする必要があります。
ついでにもう一つ。
magic_qoute_gpcは余計なお世話なので、Offにしている方も多いと
思います。php.ini-distではmagic_qoute_gpc=Onなので、入
力値はエスケープ(addslashes)済みで、これでSQL文が安全と考えて
いらっしゃる方もいるかも知れません。しかし
<?php
var_dump(addslashes(';'));
?>
としてみれば解りますが、addslashesだけではSQLインジェクション
は防げません。例えば、
pg_query($db, 'SELECT a FROM test WHERE id = '.$POST['id'].';');
で、$_POST['id']に
1;DELETE FROM test
が入っていると困る方もいらっしゃるのでは?
最後に、pg_convert()はmagic_quote=Offが前提に作成されています。
つまり、magic quoteが有効な場合、テキストタイプのデータ型では
スラッシュ入りの文字列をpg_escape_stringまたはaddslashes
でエスケープします。
# HTMLとして出力する場合も、htmlentitiesでエスケープするべきであり
# magic quoteはやはり邪魔です。
--
Yasuo Ohgaki