SQLインジェクションの仕組みを社内の若手に理解させるために、SpringBootで動作確認アプリを作った。
Spring Boot + SQLite + MirageSQL で作った。
あえて起こすように作るとなると結構面倒くさい。
最初、SQLファイル読み込みでやってたら、エスケープ処理をライブラリ側でやってくれるので出来ねぇって事に気付かず、悩んでしまった。
今のライブラリはよく出来てんだなぁ~と関心した。
なので、しょうがなくSQLベタ書きして、起こさせた。
意図した動作になったので、とりあえず満足。
実際に作ってみて、SQLをJavaのソース内に書いたが、違和感が凄かった。
やっぱり、別のソースを一緒のファイルに書くべきではない。
可読性が著しく低下する。
今回はじめてMirageSQLを使ってみたが、やはり2waysqlは理解しやすい。
SQLファイルを別ファイルに記載出来るだけでも十分だが、値の埋め込みがどうなっているのかわかり安いので、考えた奴は偉大だなぁとおもった。
ただ、if文とかの制御が入ってくるとSQLが読みにくくなる。
制御はJava内でやるようにして、極力SQLで書かないのが正解ですね。。。
他にもXSSやディレクトリ・トラバーサルなどのセキュリティ対策がなぜ必要か理解させるための機能を追加したいが、また今度。