我们可以使用过滤器来避免来自 url 的 sql 注入吗?有开源过滤器吗?Spring是否也有这样的过滤器..
请回复我
您实际上需要在 JDBC 中使用 prepareStatement() 来转义来自 URL 的查询,而不是应用某种“过滤器”。如果您使用带有 setParameter() 的 ORM 实现,则可以通过这种方式解决问题。
Sql 注入在编写准备好的语句的持久层(您可以使用 Hibernate、JPA、iBatis 等)中处理。确保使用Prepared 语句。
你真的需要一个多管齐下的方法。使用准备好的语句或绑定变量很重要,但有些人可能会出错并让滥用查询通过。您还应该配置数据库,以便人工和自动用户只拥有他们需要的权限。
您的典型用户不需要CREATE TABLE
或DROP TABLE
特权,所以不要把这些给他。像这样的查找表US_STATES
应该是只读的;除非发生灾难,否则不要给任何人INSERT
,UPDATE
或。DELETE
如果伊利诺伊州斯普林菲尔德在地震中被摧毁并且国会大厦被移动,则暂时给予 dba UPDATE 权限。
还可以考虑为用户必须执行的任务编写存储过程。您可以授予程序自己的权限,并授予用户访问它们的权限。