首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL注入的智能解决方案

SQL注入的智能解决方案
EN

Stack Overflow用户
提问于 2013-07-08 08:31:53
回答 3查看 229关注 0票数 0

这是我的应用程序的查询模块中的一个关键字冲突问题,请看是否可以告诉我一个智能解决方案。

首先,在查询模块中,每个查询条件包含UI中的三个部分:

1.字段名,其值是固定的,例如原点,finalDest.

2.运算符,它是一个选择列表,包括“喜欢”、“不喜欢”、"in“、”不是in“、"=”、“!”

3.值,此部分由user.then在后端输入,它将根据用户界面的查询条件组装SQL语句,例如用户在用户界面中键入/选择以下内容

代码语言:javascript
复制
Field Name       Operator       Value
origin           like           CHI
finalDest        in             SEL

在后端,它将生成以下SQL:

从预订处选择*,如'%CHI%‘和’finalDest‘in ('SEL').

但是有一个bug,例如,如果用户在"value“中键入一些特殊符号,例如”‘’“、"_”等等,它将导致生成的SQL还包含‘或__,例如:

从预订处选择*,如“%C_HI%”和finalDest in (‘S’‘EL’).

您可以看到,在"where“块中有特殊的符号,因此不能执行SQL

对于这个问题,我的解决方案是在执行之前在特殊符号前面添加转义字符"/“,但我知道的是‘或_这将与SQL关键字冲突,您知道我是否还有其他类似的符号需要处理,或者你们有什么更好的方法可以避免注入吗?

对不起,忘了告诉你我用的是什么语言,我用的是java,数据库是mysql,我也使用hibernate,有很多人说我为什么不使用PreparedStatement,这有点复杂,简单地说,在我的公司里,我们有一个名为动态查询的FW,我们在XML文件中预定义了SQL片段,然后我们用jxel表达式根据用户界面传递的条件组装SQL,因为SQL是预定义的东西,我担心如果改变使用PreparedStatement,它会对我们的FW带来很多变化,因此,我们关心的只是如何用一种简单的方法解决SQL注入问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-08 08:36:19

代码语言:javascript
复制
0   An ASCII NUL (0x00) character.
'   A single quote (“'”) character.
"   A double quote (“"”) character.
b   A backspace character.
n   A newline (linefeed) character.
r   A carriage return character.
t   A tab character.
Z   ASCII 26 (Control+Z). See note following the table.
\   A backslash (“\”) character.
%   A “%” character. See note following the table.
_   A “_” character. See note following the table

参考文献

堆叠相似问题

票数 1
EN

Stack Overflow用户

发布于 2013-07-08 08:36:05

在向数据库发送任何信息之前,代码应该开始尝试停止服务器端的SQL注入。我不确定您使用的是哪种语言,但这通常是通过创建包含某种绑定变量的语句来实现的。在Java中,这是一个PreparedStatement,其他语言也包含类似的特性。

在语句中使用绑定变量或参数将利用内置的SQL注入保护,这将比您或我在数据库上所写的任何东西都要好。如果您在服务器端执行任何String连接以形成完整的SQL语句,则这是SQL注入风险的指示符。

票数 2
EN

Stack Overflow用户

发布于 2013-07-08 08:44:07

您应该在SQL语句中使用绑定变量。如前所述,这是在Java中的PreparedStatements中完成的。

为了确保只使用有效的列名,可以根据数据库验证输入。MySQL作为INFORMATION_SCHEMA的一部分提供了类似于每个表的列的架构信息。有关更多信息,请查看MySQL文档:

模式列表“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17522116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档