表示 进入内容 12
Displaying posts with tag: 注入 (reset)
MySQL防范SQL注入风险

0、导读

   在MySQL里,如何识别并且避免发生SQL注入风险

1、关于SQL注入

   互联网很危险,信息及数据安全很重要,SQL注入是最常见的入侵手段之一,其技术门槛低、成本低、收益大,颇受各层次的黑客们所青睐。

   一般来说,SQL注入的手法是利用各种机会将恶意SQL代码添加到程序参数中,并最终被服务器端执行,造成不良后果。

   例如,我们访问接口 http://imysql.com/user.php?userid=123 来根据userid获取用户信息,假设程序中是这么处理的:

   $sql = “SELECT * FROM user WHERE userid = $_GET[userid]“;

  …

[获取更多]
解决 SQL 注入的另类方法

问题解读

我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,假定我们有如下 SQL 模板语句:

select * from T where f1 = ‘{value1}’ and f2 = {value2}

现在我们需要根据用户输入值填充该语句:

value1=hello
value2=5

我们得到了下面的 SQL 语句,我们再提交给数据库:

select * from T where f1=’hello’ and f2=5

问题在于,攻击者可以构造如下的用户输入值:

value1=anything’ or 1=1 or f1=’whatever
value2=5

拼接好的最终语句就变成了:

select * from T where f1=’anything’ or 1=1 or f1=’whatever’ and f2=5

攻击者成功地改变了模板语句的语义。这种问题不单单发生在 SQL 上,还出现在通常使用模板的任何语言上,比如 HTML 和 shell 脚本。

常规解决方案的说明

[获取更多]
表示 进入内容 12