SQLインジェクション対策
講習か何かに行ってきた成果を取り込んだ対策一覧
- 文字数を一律50文字に制限する
- SQL生成時にユーザが入力した文字列はサニタイジングする。ただし、メールアドレスとして使用されるような文字列はその限りではない
- SQL生成時に&、<、>、"はそれぞれ、&、<、>、"に変換する
- テーブル単位で実行可能なSQLを制限する
もはやどこから突っ込めばいいのか・・・
講習に参加した人がアレなのか、講習自体がアレなのか、両方ともアレなのか。
とりあえず、
- 一律50文字とかアホすぎる。普通に50文字越えるような入力のことを考えてない
- ユーザが入力した文字列だけサニタイズするとかバカすぎる*1
- そもそも自分で変換処理組み込むとか駄目すぎる。SqlParameter使え
- その限りではない・・・って、やる気なさ過ぎる
- SQL生成時にHTMLをエスケープとか、そもそもそれはSQLインジェクションの対策ではないし、そんなところでエスケープしたらプログラム動かなくなるぞ
そして実装でもいろいろ問題を発見したわけですが、対策済みとしてしまったものだから今回は直さない、だそうで。
・・・・・・氏ねよ