2008年3月14日金曜日

PHP/MySQLユーザの癖??



なんかググるとSQLエラーが引っかかる事がある。


中にはSQL Injectionじゃないのもある。で、気になった事が一つ。


選択肢系の入力だとか、数字しか入らないよ。っていうバリデーションが入ってるのは普通の設計だとおもうんだけど。


異常値が入ってると、その変数を""に置換するコードがはいってるっぽいのよね。


つまり



hoge.php?number=1


ならば


select ~~~where number=1



を実行するけど、



hoge.php?number=a


ならば


select ~~~where number=



を実行して、最後尻切れトンボなSQL吐くから死亡。っての。


うーん、もいっちょだよ。もいっちょ。がばれ。その程度のコードだと学生バイトにも負けちゃうよ。


もいっちょ毛色のちがうやつ。


セッション変数の内容をそのままSQLにつっこんでるけど、セッション切れるとセッション変数がnullになって憤死。


これは、気持ちはわからんでもない。テスト大変だもんね。がばれ。


てか、セッション管理まわりの設計段階でがばれ。


似たような毛色のやつ。


ロボット防止に特定のキーが有ることをSQLで問い合わせてチェックしてるんだけど。。。intenger型と''を比較して憤死。いや~ボットにはエラーみせてもいいって。。google様もボットだぜ。かこわるい。


斜め上な毛色のやつ。


セッションIDが連番なのでgoogle様が連番クロールして、情報漏れ。。。。までは希に聞くお馬鹿な実装。


斜め上な人は、DB内のデータをエスケープせずにつっこんむから昔、バイアグラ商人ボットがつっこんできた「I'll ~~」って文章をDBからひっぱりだして、それをつかってSQLを組み立てて憤死。


バイアグラなんて単語ポストしてねぇ~のになんでエラー表示にバイアグラって出てるか最初わからなかった。。。





結論



ちゃんと異常系も考慮に入れたコード書きましょう。お金をもらって仕事してるなら、異常系のテストもちろっとはしましょう。(Firefox使いならTamper Dataプラグインがおすすめ)






0 件のコメント:

コメントを投稿