include::../description.adoc[] include::../ask-yourself.adoc[] include::../recommended.adoc[] == Sensitive Code Example These clients from https://commons.apache.org/proper/commons-net/[Apache commons net] libraries are based on unencrypted protocols and are not recommended: ---- TelnetClient telnet = new TelnetClient(); // Sensitive FTPClient ftpClient = new FTPClient(); // Sensitive SMTPClient smtpClient = new SMTPClient(); // Sensitive ---- Unencrypted HTTP connections, when using https://square.github.io/okhttp/https/[okhttp] library for instance, should be avoided: ---- ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.CLEARTEXT) // Sensitive .build(); ---- == Compliant Solution Use instead these clients from https://commons.apache.org/proper/commons-net/[Apache commons net] and http://www.jcraft.com/jsch/[JSch/ssh] library: ---- JSch jsch = new JSch(); // Compliant if(implicit) { // implicit mode is considered deprecated but offer the same security than explicit mode FTPSClient ftpsClient = new FTPSClient(true); // Compliant } else { FTPSClient ftpsClient = new FTPSClient(); // Compliant } if(implicit) { // implicit mode is considered deprecated but offer the same security than explicit mode SMTPSClient smtpsClient = new SMTPSClient(true); // Compliant } else { SMTPSClient smtpsClient = new SMTPSClient(); // Compliant smtpsClient.connect("127.0.0.1", 25); if (smtpsClient.execTLS()) { // commands } } ---- Perform HTTP encrypted connections, with https://square.github.io/okhttp/https/[okhttp] library for instance: ---- ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) // Compliant .build(); ---- include::../exceptions.adoc[] include::../see.adoc[] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] endif::env-github,rspecator-view[]