SV.SOCKETS
如果应用程序正在使用套接字,将报告此警告。
漏洞与风险
在许多情况下都应避免使用套接字。例如,EJB 标准包含以下指导原则:企业 bean 不能尝试侦听套接字,接受套接字的连接,或使用套接字进行多播。如果使用套接字,其他应用程序(applet、servlet 等)可能出现严重安全问题。
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
缓解与预防
使用框架方法调用代替直接使用套接字。
示例 1
复制
public class SV_SOCKETS_Sample_1 extends Applet {
static final int PORT = 7776;
public void init() {
super.init();
try {
final ServerSocket serv = new ServerSocket(PORT);
Runnable rr = new Runnable() {
public void run() {
try {
while (true) {
Socket sock = serv.accept();
BufferedReader r = new BufferedReader(
new InputStreamReader(sock
.getInputStream()));
PrintWriter w = new PrintWriter(sock
.getOutputStream(), false); // no autoFlush
w.write("Hello");
w.flush();
r.close();
w.close();
sock.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
new Thread(rr).start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
//...
public void paint(Graphics g) {
}
}
针对第 22 行报告 SV.SOCKETS:在许多情况下都应避免直接使用套接字(例如在 Applet、EJB 中)。这可能导致严重问题