Je développe une API pour une application capable de trouver ce que l'on appelle des ProductSolutions en fonction de leur solutionID (qui est un entier).Attaques XSS: modification d'une exception lancée dans un CRUDRepository de démarrage au printemps?
Le code ressemble à ceci:
@Repository
public interface ProductSolutionRepository extends CrudRepository<ProductSolution, String> {
public List<ProductSolution> findBySolutionId(@Param("solutionId") int solutionId);
}
Lors de l'envoi d'une demande avec une chaîne au lieu d'un entier (localhost:8080/api/v1/productSolutions/search/findBySolutionId?solutionId=dangerousscript
) l'API renvoie une erreur avec le message suivant:
Échec de la conversion du type [java.lang.String] au type [@ org.springframework.data.repository.query.Param int] pour la valeur 'dangerousscript'; exception imbriquée est java.lang.NumberFormatException: Pour chaîne d'entrée: \ « dangerousscript \ » "`
Bien qu'il semble que Chrome et Firefox sont échappaient soigneusement l'entrée (et ne pas exécuter les scripts) personnes Nous avons toujours peur que notre API puisse être utilisée pour les attaques de script inter-sites
Une façon simple de résoudre ce problème serait de supprimer l'entrée que l'utilisateur a donnée lorsque nous levons une exception, ou de créer notre propre page d'erreur. Configurer le démarrage du ressort pour lancer une exception personnalisée?
Cela n'a rien à voir avec les scripts inter-sites. C'est juste que vous essayez d'envoyer une chaîne où Spring attend un entier, et renvoie correctement une exception. Je ne vois pas comment cela pourrait être un problème? – g00glen00b