読者です 読者をやめる 読者になる 読者になる

SQLインジェクション対策

C# SQL

講習か何かに行ってきた成果を取り込んだ対策一覧

  • 文字数を一律50文字に制限する
  • SQL生成時にユーザが入力した文字列はサニタイジングする。ただし、メールアドレスとして使用されるような文字列はその限りではない
  • SQL生成時に&、<、>、"はそれぞれ、&、<、>、"に変換する
  • テーブル単位で実行可能なSQLを制限する

もはやどこから突っ込めばいいのか・・・
講習に参加した人がアレなのか、講習自体がアレなのか、両方ともアレなのか。


とりあえず、

  • 一律50文字とかアホすぎる。普通に50文字越えるような入力のことを考えてない
  • ユーザが入力した文字列だけサニタイズするとかバカすぎる*1
  • そもそも自分で変換処理組み込むとか駄目すぎる。SqlParameter使え
  • その限りではない・・・って、やる気なさ過ぎる
  • SQL生成時にHTMLをエスケープとか、そもそもそれはSQLインジェクションの対策ではないし、そんなところでエスケープしたらプログラム動かなくなるぞ


そして実装でもいろいろ問題を発見したわけですが、対策済みとしてしまったものだから今回は直さない、だそうで。


・・・・・・氏ねよ

*1:ここではあえて「サニタイズ」と言う言葉を使った。なぜなら--を@とかに変換してるから。それはエスケープとは言わないよなぁ