4

クロスサイトスクリプティングに関するチートシートには、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の構成例を探しています。

4

1 に答える 1

5

これは、JSONを読み取るときに、プロパティのセッター(プロパティなど)で行うのが最も簡単setTitle()です。title

または、追加の文字をエスケープすることを考えている場合(たとえば、HTMLマークアップの埋め込みを防ぐため)、このブログエントリを参照してください:Jacksonを使用したJSONでのHTML文字のエスケープ

于 2012-09-23T01:12:57.473 に答える