私は、SolutionID(整数)に基づいて、いわゆるProductSolutionsを見つけることができるアプリケーション用のAPIを開発しています。XSS攻撃:SpringブートCRUDRepositoryで例外をスローしましたか?
コードは次のようになります
変換に失敗しました:
は@Repository public interface ProductSolutionRepository extends CrudRepository<ProductSolution, String> { public List<ProductSolution> findBySolutionId(@Param("solutionId") int solutionId); }
代わりに整数の列で要求を送信する(
localhost:8080/api/v1/productSolutions/search/findBySolutionId?solutionId=dangerousscript
)APIは、次のメッセージでエラーを返します型[java.lang.String]から値 の場合は [@ org.springframework.data.repository.query.Param int]と入力してください。 'dangerousscript';ネストされた例外は java.lang.NumberFormatExceptionです:入力文字列の場合:「dangerousscript \」 "`
ChromeとFirefoxがきちんと入力をエスケープしている(と任意のスクリプトを実行していない)ように見えますが、
人\これを修正する簡単な方法は、例外をスローしたときにユーザーが入力したものを削除することです、または独自のエラーページを作成することです。
これはクロスサイトスクリプティングとは関係ありません。 Springが整数を期待している文字列を送信しようとしていて、例外を適切に返すだけです。それがどうしたら問題になるのか分かりません。 – g00glen00b