43. バグの出し方のコツ その④
種類
種類に関しては、本当ならテストケースでしっかりとやっておいてほしいと思うところ。
ただ探索的テストだけならば、種類はしっかりと考えながら試していこう。
アップロードできる各種ファイル……文字種……入力があるところには種類は存在しているので気を付けよう。
たまに入力で「test」と書いて終わらせている人がいるが、その入力で何を確認したいのか考えておく必要がある。
RLO
12話でも書いた内容。
ファイルにRLOの制御文字はとても簡単に挿入できる。
これはもともと「exploit_fdp.jpg」というファイル名。
これのアンダーバーの次にRLOを挿入している。
ファイル名だけみると「pdf」だが、jpgファイルであることがわかる。
実行するともちろん画像として開く。
これが悪意あるexeなどなら大変だゾ。
前に採用サイトのQAを実施したことがあるが、採用系は課題提出のためにファイルアップロードができることが多い。
人事系採用チームだと恐らくダウンロードしたらファイル名だけ見てサクッとダブルクリックする人が多数いそう……!
おっと「テスターちゃんで見た」みたいな感じでイタズラするのはやめましょう(爆
サニタイジング
web系だと例えば「<b>お</b>」みたいなことを書いて、サニタイジング(無害化)をしないとタグがそのまま実行されてしまったりする。
(これを利用してjavascriptをしこむ攻撃がXSS(クロスサイトスクリプティング)だ)
なので「<」を「<」といった形に変更したりする。
ただ、これをやった後にたまにそのまま「<」なんかで出ていたりする。
今のところ作者としてはニコニコ動画の動画上部のリンク広告の「&」がそのまま「&」で出ることは確認済みだ!(いつ直すんだろう)
4バイト文字
例えば「ハート」と打ち込んだときに斜線が入ったハート、あれは4バイト文字。
文字化けだったり、DBで保存できないことがあったりする。
バッサリ切り捨てるプロダクトもあるけど、スマホ経由だと絵文字(4バイト)を使う人も多いゾ。
5C文字
ふと思い出したので記載。
今は駆逐された感はあるけど、Shft-JISだったころは「5C文字」で文字化けすることもあった。
5Cがメタ文字「¥」と同じことから発生。
例えば「表示」。
表示 = 955C 8EA6
ここで5Cが「¥」で認識されなくなってしまう。
結果
95C8 A6 = 侮ヲとなる。