我正在通过命令行参数从用户那里获取String
Java程序。
问题是我应该执行什么样的检查来防止可能的攻击和漏洞?
我不是安全领域的专家,但据我所知
- 在C中,用户指定的行太长并且处理不当可能导致缓冲区溢出
- 在PHP行中包含 ` 字符并且处理不当可能导致 SQL 注入
现在我想不出任何特定格式的 aString
来应用一些正则表达式来检查。它可以是任意的,但如果看起来有害,我想立即退出。该字符串可能会通过网络发送到 Java 服务器,在那里它可能用于 SQL 查询。
if (args.length > 0) {
String arg0 = args[0];
if (!isValidString(arg0)){
System.exit(1);
}
}
public boolean isValidString (String str) {
if (str == null) return false;
//TODO: many more checks here
return true;
}
我确信 Java 比 C 或早期的 PHP 安全得多,但我应该注意什么?