验证用户输入JDBC的最佳方法?
时间:2020-03-06 14:50:39 来源:igfitidea点击:
是否有内置的方法可以使用JDBC来逃避Java中的用户输入?类似于php版本的mysql_real_escape()函数。验证输入的最佳方法是什么?
解决方案
如果我们要确定如何确保用户输入不能在SQL注入攻击中使用,那么执行此操作的方式(以及应使用JDBC编写所有SQL的方式)是使用Prepared Statements。 JDBC将自动处理任何必要的转义。
http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html
只是为了补充@skaffman的建议,PreparedStatements解决了大多数应用程序的问题。但是,在某些应用程序中,SQL语句的一部分(而不是参数值)是从用户输入中获取的(例如,包含ORDER BY子句的URL参数)。只要确保我们也对它们进行了消毒,或者更好的是,如果可能的话,请避免使用此类设计。