mysql real java_Java等价于PHP的mysql_real_escape_string()

有没有Java相当于PHP的mysql_real_escape_string()?

这是在将它们传递给Statement.execute()之前,先转义SQL注入尝试.

我知道我可以使用PreparedStatement,但是我们假设这些是一个镜头的语句,所以准备它们将导致lower performance.我已经改变了使用PreparedStatement的代码,但是给定了现有代码的结构,escape()函数将使代码更改更容易审查和维护;我更喜欢容易地维护代码,除非有一个引人注目的理由是额外的复杂性.此外,PreparedStatements也由数据库处理不同,所以这可能会使我们发现我们以前没有遇到的数据库中的错误,在发布到生产之前需要更多的测试.

后记:

在我继承的环境中有很多微妙之处,我故意在我的问题上回避.

两点要考虑:

1)准备的语句不是灵丹妙药,不能提供100%的针对SQL注入的保护.一些数据库驱动程序使用不安全的字符串连接实例化参数化查询,而不是将查询预编译为二进制形式.另外,如果您的SQL依赖于存储过程,则需要确保存储过程本身不会以不安全的方式构建查询.

2)最准备的语句实现将语句绑定到实例化语句的数据库连接.如果您正在使用数据库连接池,则需要小心

仅使用准备好的语句参考,只能使用它准备的连接.一些汇集机制确实实现了这一点.否则,您可以对准备好的语句进行汇总,或者(最简单但更多的开销)为每个查询创建一个新的准备语句.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值