クロスサイトスクリプティングに関するチートシートには、XSS攻撃から保護するための多くのルールがあります。Spring MVC + Jackson + JPA + HibernateBeanValidationを使用しているWebアプリにこれらの提案を実装したいと思います。例として、私のアプリにあるものと同様の次のコードを考えてみましょう。
public class MessageJson {
@NotEmpty // Bean Validation annotation
private String title;
@NotEmpty
private String body;
// ... etc getters / setters
}
public class BolgPostController
{
@RequestMapping(value="messages",method=RequestMethod.POST)
public void createMessage(@Valid @RequestBody MessageJson message)
{
// **Question** How do I check that the message title and body don't contain
// nasty javascripts and other junk that should not be there?
// Call services to write data to the datababse
}
@RequestMapping(value="messages",method=RequestMethod.get)
public @ResponseBody List<MessageJson> createMessage()
{
// get data from the database
// **Question** How do I escape all the data in the list of MessageJson before
I send it back to the data.
}
}
チートシートルールを実装する次の方法を見ることができます。
- オプションA各コントローラーメソッドに手動で実装します。
- オプションB自動的に実行できるSpringMVCの拡張機能を構成します
- オプションC入力/出力のほとんどがJacksonを経由するため、Jacksonを構成して私に代わって実行できるようにします
オプションBとCを優先して、これら3つのオプションのいずれかでSpringMVCの構成例を探しています。