小编Kie*_*lly的帖子

Java的等价于PHP的mysql_real_escape_string()

是否存在类似于PHP的mysql_real_escape_string()的Java?

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

我知道我可以使用PreparedStatement,但我们假设这些是一次性语句,因此准备它们会导致性能降低.我已经将代码更改为使用PreparedStatement,但考虑到现有代码的结构,escape()函数会使代码更改更容易查看和维护; 我更喜欢易于维护代码,除非有一个令人信服的理由来增加复杂性.此外,PreparedStatements由数据库以不同方式处理,因此这可能使我们暴露于数据库中我们之前未遇到过的错误,在发布到生产之前需要进行更多测试.

Apache StringEscapeUtils escapeSQL()仅转义单引号.

后记:在我继承的环境中存在许多微妙之处,我在我的问题中故意避免.

需要考虑的两点:

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

2)大多数预准备语句实现将语句绑定到语句被实例化的数据库连接上.如果您正在使用数据库连接池,则需要注意
仅使用准备好的语句引用与其准备的连接.一些池化机制确实透明地实现了这一点.否则,您也可以汇集预准备语句或(最简单但更多开销)为每个查询创建一个新的预准备语句.

java mysql sql security jdbc

14
推荐指数
3
解决办法
1万
查看次数

C有一个标准的mysql连接池库吗?

我有一个使用MySQL库进行数据库访问的C应用程序.

是否有一种标准方法可以为这样的应用程序实现数据库连接池?在C类接口似乎并不支持它.

c mysql performance connection-pooling

5
推荐指数
1
解决办法
7538
查看次数

如何使用ENOSYS阻止sem_open()失败?

我有两个Slackware Linux系统,POSIX信号量sem_open()调用失败,errno设置为38.示例代码重现如下(代码在CentOS/RedHat上运行正常).

是否有可能导致此问题的内核或系统配置选项?其他建议?

有问题的系统是Slackware 10.1.0内核2.6.11 /lib/librt-2.3.4.so /lib/libpthread-0.10.so,但相同的代码适用于更旧的RedHat 9内核2.4.20/lib/librt -2.3.2.so /lib/tls/libpthread-0.29.so.(也适用于CentOS 5内核2.6.18 /lib/librt-2.5.so /lib/i686/nosegneg/libpthread-2.5.so).

man sem_open表明sem_open()系统不支持此错误方式.

#define ENOSYS          38      /* Function not implemented */
Run Code Online (Sandbox Code Playgroud)

sem_open()用户空间是librt我们对动态链接和librt存在受影响的系统.

受影响的系统声称支持POSIX信号量:_POSIX_SEMAPHORES是真的并sysconf(_SC_SEMAPHORES)确认了这一点.

谢谢,基兰

编辑1:我已经在使用的软件版本中添加了更多细节,并删除了一些不相关的评论.

编辑2:/ dev/shm安装在良好的系统上,而不是安装在坏系统上.挂载它不会改变受影响系统上的行为.我认为/ dev/shm也是必要的,但sem_open()在此之前就失败了,strace支持这个.

# /* Quick'n'dirty test program to illustrate sem_open failure
#Run this file to auto-build test and run as a.out

# Build
gcc $0 -lrt
if [ $? -ne 0 ] ; then exit ; fi …
Run Code Online (Sandbox Code Playgroud)

c linux posix semaphore ipc

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×2

mysql ×2

connection-pooling ×1

ipc ×1

java ×1

jdbc ×1

linux ×1

performance ×1

posix ×1

security ×1

semaphore ×1

sql ×1