JDBC安全吗?

3 java database security jdbc

我是JDBC新手,新项目要求我使用JDBC.我想知道的是,

JDBC安全吗?

如何防止"Mysql Injection"式问题?

使用JDBC时需要注意哪些安全问题?

而如何确保,我的意思是优化安全性,以防止黑客入侵数据库?

编辑:

我试过谷歌,如果我谷歌:

"php mysql安全问题"=>它给出了很多结果

如果我谷歌:

"jdbc mysql安全问题"=>几乎看不到任何相关页面

这是不是意味着,使用jdbc是安全的吗?不需要担心被黑客入侵?

Emi*_*l H 12

使用预备陈述.对于假设登录,您可以使用此,例如:

PreparedStatement stmt = conn.prepareStatement("SELECT * FROM member WHERE member_username = ? AND member_password = ?");
stmt.setString(1, username);
stmt.setString(2, password);
stmt.execute();

ResultSet rs = stmt.getResultSet();
// ...
Run Code Online (Sandbox Code Playgroud)

这将完全保护您免受SQL注入漏洞的攻击.

  • ZeroCool:不安全的版本类似于conn.createStatement().execute("SELECT*from mytable where username ='"+ username +"'"); (2认同)

Ste*_*n C 10

JDBC安全吗?

JDBC的安全性是您使用的JDBC驱动程序的属性.通常,如果您的驱动程序使用SSL传输层,则它与SSL密钥的强度一样安全.如果它使用未加密的传输,则不安全.

如何防止"Mysql Injection"式问题?

在为JDBC编写SQL查询时,请注意不要包含可能包含嵌入式SQL的"原始"字符串.例如:

String query = "SELECT * FROM SOME_TABLE WHERE X = '" + someString + "' ;";
Run Code Online (Sandbox Code Playgroud)

如果someString包含未转义的"'"字符,那么您打算成为SQL文字字符串的内容实际上可以更改为完全不同的内容.someString如果它包含任何"'"字符(或其他恶意),则修复是拒绝,或者使用插入SQL字符串转义的方法对其进行预处理.

另一种(更简单/更可靠)方法是使用带有"?"的预准备语句 占位符并将值注入查询使用setString(...)等.

使用JDBC时需要注意哪些安全问题?

除了上述内容之外,我不知道JDBC的具体内容.实际上,上述问题都不是JDBC特有的.

而如何确保,我的意思是优化安全性,以防止黑客入侵数据库?

  1. 购买/阅读有关构建安全系统的好书.
  2. 小心.
  3. 支付安全专家的费用来审核您的代码/系统.


ZZ *_*der 5

JDBC是一种数据库连接协议,它与所有其他连接数据库的方法一样安全.

大多数安全问题与JDBC协议本身无关.例如,您可以使用Prepared Statement将SQL注入的风险降至最低.无论您如何连接到数据库,都将如此.