PHP 的 mysql_real_escape_string() 的 Java 等效项

2023-11-22

Java 是否有相当于 PHP 的 mysql_real_escape_string() ?

这是为了在将 SQL 注入尝试传递给 Statement.execute() 之前逃避它们。

我知道我可以使用PreparedStatement代替,但我们假设这些是一次性语句,所以准备它们将导致性能较低。我已经更改了代码以使用PreparedStatement,但考虑到现有代码的结构方式,escape() 函数将使代码更改更易于审查和维护;我更喜欢易于维护的代码,除非有令人信服的理由导致额外的复杂性。此外,数据库对PreparedStatement的处理方式不同,因此这可能会让我们面临数据库中以前没有遇到过的错误,在发布到生产环境之前需要进行更多测试。

Apache StringEscapeUtils escapeSQL()只转义单引号。

后记: 我所继承的环境中有很多微妙之处,我在问题中刻意回避了。

需要考虑两点:

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

2) 大多数准备好的语句实现将语句绑定到实例化该语句的数据库连接。如果您使用数据库连接池,则需要小心
仅将准备好的语句引用与准备好的连接一起使用。一些池机制确实透明地实现了这一点。否则,您也可以合并准备好的语句,或者(最简单但开销更大)为每个查询创建一个新的准备好的语句。


据我所知,没有“标准”方法可以做到这一点。

尽管您目前存在担忧,但我强烈建议您使用准备好的陈述。对性能的影响可以忽略不计——我们也有类似的情况,每秒有数千条语句——其中大多数也是一次性的。

您获得的安全性应该比您尚未看到的性能问题更重要。在我看来,这是一个明确的“不要过早优化”的情况。

无论如何,如果您后来确实发现遇到了性能问题,请通过仔细分析来确保准备好的语句确实是原因,然后寻找替代方案。在那之前,你应该省去试图正确逃脱的麻烦。

这甚至更重要,因为我推断您正在开发某种面向公众的网站 - 内部应用程序很少获得足够的流量来关心性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 的 mysql_real_escape_string() 的 Java 等效项 的相关文章

  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • Hibernate.createBlob() 方法从 Hibernate 4.0.1 开始已弃用,并移至 Hibernate.getLobCreator(Session session).createBlob()

    Method Hibernate createBlob 已弃用自休眠4 0 1并搬到Hibernate getLobCreator Session session createBlob 任何解决方案我应该在方法内传递什么getLobCrea
  • 我可以使用子接口重新编译公共 API 并保持二进制兼容性吗?

    我有一个公共 API 在多个项目中多次使用 public interface Process
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 是否有适用于所有数据库的标准sql

    如下所示 不同数据库的语法有所不同 是否存在适用于所有数据库的标准方法 有没有什么工具可以将任意sql转换为任意sql SQL Server 2005 CREATE TABLE Table01 Field01 int primary key
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • 评估 CRC-32 实现中的差异

    我见过相同基本 CRC 32 算法的许多不同实现 如下所示 int remain int sbox SIZESBOX int dividend int bit for dividend 0 dividend lt SIZESBOX divi
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi

随机推荐

  • Java正则表达式运行速度很慢

    我正在尝试使用用于匹配 URL 的大胆火球正则表达式在 Java 中 我发现了一个导致评估永远持续下去的 URL 我修改了原始正则表达式以使用 Java 语法 private final static String pattern b Ca
  • UINavigationController 后退按钮不可见,但可以使用

    我有一个场景 我的 UINavigationController 缺少后退按钮 左按钮 但点击左按钮似乎仍然有效 我发现这里发布了类似的问题 NavigationController后退按钮消失 这是通过不将标题设置为 解决的 但这不是我的
  • 1 字节有符号数的 printf 格式

    假设如下 sizeof char 1 sizeof short 2 sizeof int 4 sizeof long 8 The printf2 字节有符号数的格式是 hd 对于 4 字节有符号数来说是 d 对于 8 字节有符号数来说是 l
  • Scala 中的线性化顺序

    在处理特征时 我很难理解 Scala 中的线性化顺序 class A def foo A trait B extends A override def foo B super foo trait C extends B override d
  • 从 SQL 字段中删除前导零的算法?

    我刚刚遇到一个有趣的问题 试图从 SQL 中的非数字字段中删除前导零 由于它可以包含字符 因此不能只将其转换为数字然后再转换回来 这就是我们最终使用的 SELECT REPLACE LTRIM REPLACE fieldWithLeadin
  • 上传较大文件时发生 CORS 错误

    我正在使用一个带有 c web api 的 Angular Web 项目 并启用了 CORS 我的所有 CORD 在所有调用中都能正常工作 除非我将文件上传到异步任务 这是我参考的方法 HttpPost public async Task
  • 在 Django 中使用基于异步类的视图的正确方法

    我正在尝试使用非常新的Django 3 1异步视图类 基于可用的有限文档 我尝试创建自己的async def call 方法 从文件来看 对于基于类的视图 这意味着使其 call 方法一async def 不是它的 init or as v
  • 默认情况下,缓存控制是公共的还是私有的?

    如果我不指定public or private指令中的Cache Control标头 默认行为是什么 是否可以通过代理服务器缓存 找到了这个问题的答案网站管理员 stackexchange com Quote See http www w3
  • 是否可以链接两个曲面图的轴以进行 3d 旋转?

    假设我有两个大小相等的二维矩阵 并为每个矩阵创建一个曲面图 有没有一种方法可以链接两个图的轴 以便可以沿同一方向同时 3D 旋转它们 和谁玩ActionPostCallback and ActionPreCallback肯定是一种解决方案
  • 为什么 Google Compute Engine 不运行我的容器?

    我可以成功地做到这一点 将我的应用程序捆绑到 Docker 镜像中 Build this image into a container using Google Cloud Build upon push to master 此容器存储在注
  • 将 jiffies 转换为秒

    我有一段用户空间代码正在解析 proc PID task TID stat 以获取 cpu 使用情况 我可以使用 HZ 获取每秒的 jiffies 但此代码可以移动到另一台具有不同配置值的机器 有没有办法在运行时从用户空间获取HZ的值 你把
  • j_security_check 重定向

    我正在Tomcat环境中学习Java servlet 我正在学习如何使用 j security check 使用基于表单的登录身份验证 因此 在我的 servlet 中 我有一个包含 j username 和 j password 的登录页
  • 在 pyspark 中拆分列

    我正在尝试在 pyspark 中拆分数据框 这是我拥有的数据 df sc parallelize 1 Foo 10 2 Bar 11 3 Car 12 toDF Key Value df df withColumn Splitted spl
  • htaccess 设置单个文件的 mimetype

    在 htaccess 文件中 可以为给定的扩展名设置 mimetype 例如 AddType application javascript js 如何为单个文件而不是扩展名设置 mimetype 我有一个 Javascript 需要与同一文
  • PHP中获取调用网页的URL

    我正在为一个班级开发网站统计引擎 这个想法是 您可以简单地在网页中嵌入一些代码 该代码将在每个页面加载时调用统计网站 然后统计网站将跟踪您的点击率等等 没有什么突破性的 我想做的是能够按网页细分网站点击量 例如 一个人可以在每个页面上包含相
  • 如何在 Docker 上运行 Spark?

    无法在 Docker 上运行 Apache Spark 当我尝试从驱动程序与 Spark Master 进行通信时 我收到下一个错误 15 04 03 13 08 28 警告 TaskSchedulerImpl 初始作业尚未接受 任何资源
  • Windows 服务安装程序不读取 App.Config 文件

    我已经在我的项目中添加了 App Config 我有一个安装程序类 ProjectInstaller cs 它需要从 App config 读取值 我正在提供钥匙 以下是示例代码 ConfigurationManager AppSettin
  • Android 谷歌地图片段

    我正在开发一个应用程序 顶部有一个菜单 菜单内有一些按钮 我正在尝试将谷歌地图添加到其中一个按钮 但我不是很成功 我正在关注本教程但不是直接实施谷歌地图MainActivity我将它们添加到按下按钮时启动的片段中 一切都很好 当我按下按钮时
  • 通过 pyspark.ml.tuning.TrainValidationSplit 调整后如何获得最佳参数?

    我正在尝试调整 Spark PySpark 的超参数ALS模型由TrainValidationSplit 它运行良好 但我想知道哪种超参数组合是最好的 评估后如何获得最佳参数 from pyspark ml recommendation i
  • PHP 的 mysql_real_escape_string() 的 Java 等效项

    Java 是否有相当于 PHP 的 mysql real escape string 这是为了在将 SQL 注入尝试传递给 Statement execute 之前逃避它们 我知道我可以使用PreparedStatement代替 但我们假设