0

私は REST コントローラーを持っています。これには、 isとwhich isdeleteStudentの 2 つのパラメーターを受け入れる メソッドがあります。studentIdLongsectionString

@RequestMapping(value="/rest/deleteStudent/studentId/{studentId}/section/{section}", method = RequestMethod.DELETE)
public  Student deleteStudent(@PathVariable Long studentId, @PathVariable String section){
    return studentService.deleteStudent(studentId ,section);
}

上記のコードでは、checkmarx が不平を言っています。このパラメーター値はコードを流れ、最終的にデータベースの内容を変更するために使用されます。アプリケーションは、要求に対して更新されたユーザー認証を必要としません。これにより、クロスサイト リクエスト フォージェリ (XSRF) が有効になる場合があります。

セクションで(Spring Web utilから)試し Htmlutils.htmlescapeましたが、運がありません。

このチェックマークの問題を取り除くにはどうすればよいですか?

もう 1 つ、フィールドが Long 型の場合、XSRF および SQL インジェクション攻撃がどのように可能になるのでしょうか?

4

2 に答える 2

1

studentIdパラメータではなくパラメータについて話しているのsectionですか?

それが本当なら、それは偽陽性だと思います。

パラメータについて話してsectionいる場合、SQLリクエストが保護されているかどうかはまったく心配しません(したがって、ORMまたは準備されたステートメントなどを使用している場合...)。

全体として、SQL インジェクションのすべてのケースで誤検知であると言えます。

そうは言っても、CSRF 攻撃の場合、実際に脆弱である可能性があります。

ハッカーが管理者にページを読み込ませた場合、CSRF 保護を実装していなければ、アクセス権がなくてもユーザー アカウントを削除できます。

于 2016-11-30T10:00:18.463 に答える