【发布时间】:2010-09-13 19:53:41
【问题描述】:
在 java 中是否有使用JDBC 转义用户输入的内置方法?类似于 php 版本的 mysql_real_escape() 函数。验证输入的最佳方式是什么?
【问题讨论】:
标签: java mysql validation jdbc
在 java 中是否有使用JDBC 转义用户输入的内置方法?类似于 php 版本的 mysql_real_escape() 函数。验证输入的最佳方式是什么?
【问题讨论】:
标签: java mysql validation jdbc
如果您的意思是如何确保用户输入不能用于 SQL 注入攻击,那么执行此操作的方法(以及所有 SQL 应使用 JDBC 编写的方法)是使用准备好的语句。 JDBC 将自动处理任何必要的转义。
http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html
【讨论】:
为了补充@skaffman 的建议,PreparedStatements 解决了大多数应用程序的问题。但是,在某些应用程序中,SQL 语句的(部分)(而不仅仅是参数值)取自用户输入(例如,包含 ORDER BY 子句的 URL 参数)。只要确保您也对它们进行消毒,或者更好的是,尽可能避免此类设计。
【讨论】: