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 

Joli Code …..

Trouvé il y a qq semaines lors d’un audit de code sur un projet contenant du JSP :

<%@ page import=" java.util.*,java.lang.*" %>
<%@ page import="java.io.* » %>
<%@ page import="java.net.* " %>
<%@ page import="java.xml.* " %>
<%@ page import="java.time.* " %>

J’aime bien ce type de développeur. J’auras peut etre une suggestion a leur faire comme celle la :

<%@ page import="java.* " %>

 

Comme ca, c’est plus simple 🙂