La plus importante manière d’eviter une injection est de valider une donnée ! et non pas juste la parser!
Meme si vous pensez que le parser doit générer une Exception.
Exemple sur une question venue ce matin et utilisant la classe suivante :
https://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#parse(java.lang.String)
Et oui, le code suivant ne génère pas d’exception :
import java.lang.String;
import java.text.*;
import java.util.Calendar;
import java.util.Date;
public class Main {
publicstaticvoid main(String[] args) {
DateFormat DFormat
= new SimpleDateFormat("dd/ mm/ yy");
try {
Calendar cal = Calendar.getInstance();
// Use of parse() method to parse
// Date From String
String dt = "10/ 27/ 16 <script>alert(1);</script>";
System.out.println("The unparsed"
+ " string is: " + dt);
// Parse string. if exception this is not a date
DFormat.parse(dt);
System.out.println ("Date parse and no exception, so use the string: " + dt);
} catch (ParseException excpt) {
excpt.printStackTrace();
}
}
}
Ce code produit :
The unparsed string is: 10/ 27/ 16 <script>alert(1);</script>
Date parse and no exception, so use the string: 10/ 27/ 16 <script>alert(1);</script>
Toujours vérifier et/ou utiliser la valeur de retour d’une méthode si il y en a une !
#appsec #appsecfr #securecoding #java