mumumuの日記: %00
日記 by
mumumu
http://www.ietf.org/rfc/rfc2396.txt
URI にASCII以外の値を入れる際は、16進にエンコードしなければな
らないことが知られている。仮にNULL文字がエンコードされた場合、
%00 となる。
検索エンジンに入力された文字列を解析するために、URIエンコード
された文字列をデコードしていたら「%00」のパターンに出会った。
まさかこんなものが検索文字列に紛れてくるとは思わなかった。。
PHP的には「ほげほげ[NULL]」と「ほげほげ」は違う文字列であるが、
PostgreSQL 的には同じと見做される。これが元でduplicate key
errorとなったのだ。
$str = preg_replace('/[\000-\017]/', '', $str); として対処。
#けど、こういう行儀の悪い検索文字列の入力の類ってわざとやって
#るのかどうかは知らんけど、Googleでしか今のところお目にかか
#っていない。Fu●k Google! とソースに書きたくなる。(藁
%00 More ログイン