rspec/rules/S5332/kotlin/rule.adoc

73 lines
1.8 KiB
Plaintext
Raw Normal View History

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:
----
val telnet = TelnetClient(); // Sensitive
val ftpClient = FTPClient(); // Sensitive
val smtpClient = SMTPClient(); // Sensitive
----
Unencrypted HTTP connections, when using https://square.github.io/okhttp/https/[okhttp] library for instance, should be avoided:
----
val spec: ConnectionSpec = 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 = JSch(); // Compliant
if(implicit) {
// implicit mode is considered deprecated but offer the same security than explicit mode
val ftpsClient = FTPSClient(true); // Compliant
}
else {
val ftpsClient = FTPSClient(); // Compliant
}
if(implicit) {
// implicit mode is considered deprecated but offer the same security than explicit mode
val smtpsClient = SMTPSClient(true); // Compliant
}
else {
val smtpsClient = 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:
----
val spec: ConnectionSpec =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[]