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注入漏洞的攻击.
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特有的.
而如何确保,我的意思是优化安全性,以防止黑客入侵数据库?
JDBC是一种数据库连接协议,它与所有其他连接数据库的方法一样安全.
大多数安全问题与JDBC协议本身无关.例如,您可以使用Prepared Statement将SQL注入的风险降至最低.无论您如何连接到数据库,都将如此.
| 归档时间: |
|
| 查看次数: |
13933 次 |
| 最近记录: |