Nad*_*ami 9 java jsp sql-injection jdbc prepared-statement
就在上周,我正在做一些PHP的东西.我做了一些小的解决方案来防止SQL注入.PHP一直是我的男人,它有3个解决方案可供使用(可能更多).一种是使用stripslashes()
函数启用"魔术查询" .另一个(推荐)是使用mysql_real_escape_string()
功能.那个简单,我的问题就解决了.但是,当谈到JSP时,事情似乎并不那么简单.我搜索并没有找到任何内置函数来删除斜杠或做那些事情(我相信这样的功能可以使用基本的JAVA函数实现,但......).
请帮我保护我的数据库.我听说过PreparedStatement
,但真的无法理解我的脑袋?(我觉得新手的真正含义).
Bal*_*usC 23
只需使用PreparedStatement
而不是Statement
.
即使用
String sql = "INSERT INTO tbl (col1, col2, col3) VALUES (?, ?, ?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, col1);
preparedStatement.setString(2, col2);
preparedStatement.setString(3, col3);
preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
代替
String sql = "INSERT INTO tbl (col1, col2, col3) VALUES ('" + col1 + "', '" + col2 + "', '" + col3 + "')";
statement = connection.createStatement();
statement.executeUpdate(sql);
Run Code Online (Sandbox Code Playgroud)
该PreparedStatement
还提供了其他类型的方便的设置方法,如setInt()
,setDate()
,setBinaryStream()
,等等.
请注意,此问题与JSP无关.它与Java有关.在JSP类中编写原始Java代码也被认为是一种不好的做法.最佳实践是创建一个独立的类,它在特定的表上执行所有数据库交互任务,也称为DAO(数据访问对象)类.然后,您可以在servlet类中导入/使用此DAO类.
归档时间: |
|
查看次数: |
14434 次 |
最近记录: |