J'utilise le plugin « Trouver Bugs de sécurité » pour Findbugs: https://find-sec-bugs.github.io/Comment enlever « souiller » pour Findbugs « Trouver Bugs de sécurité »
La plupart des détecteurs utilisent « l'analyse Taint » pour élever leurs avertissements.
Y at-il des documents sur la façon de supprimer « souiller » d'une valeur?
Je ne trouve pas de documents à ce sujet sur leur site, et moi avons farfouillé leur code source et ne peut pas le comprendre:
- src/main/java/com/h3xstream/findsecbugs/taintanalysis
- src/main/resources/taint-config
- Voir aussi this wiki page "Injection detection"
L'outil identifie un bug d'injection possible à partir du code comme:
import javax.ws.rs.core.Response;
import org.apache.http.client.methods.HttpGet;
public Response get(String x, String y) throws IOException {
String url = String.format("%s/%s",
x,
y);
HttpGet request = new HttpGet(url); // HERE
...
}
J'ai résolu ce bug à ma satisfaction:
import javax.ws.rs.core.Response;
import org.apache.http.client.methods.HttpGet;
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
public Response get(String x, String y) throws IOException {
String url = String.format("%s/%s",
urlPathSegmentEscaper().escape(x),
urlPathSegmentEscaper().escape(y));
HttpGet request = new HttpGet(url);
...
}
... mais l'outil est encore un bug repérage possible. Je crois que c'est parce qu'il ne reconnaît pas "com.google.common.net.UrlEscapers.urlPathSegmentEscaper()
" en supprimant Taint ici.
Comment puis-je persuader autrement? Si je ne peux pas, quelles techniques d'assainissement puis-je utiliser ici que l'outil reconnaît?