Valider et non pas juste parser !

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 

Laisser un commentaire