首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过LINKS注入SQL?

通过LINKS注入SQL?
EN

Stack Overflow用户
提问于 2011-12-14 01:24:17
回答 4查看 410关注 0票数 0

这是关于编辑我的数据库表中的两个字段(note_name和note_description),我从链接中获取了一些信息,并从一个表单中获取了新字段:

链接:

代码语言:javascript
复制
/main_edit.php?edit=note_name2&type=PHP

和:

代码语言:javascript
复制
elseif(isset($_GET['edit'])){
        $note_type=$_GET['type'];
        $old_note_name=$_GET['edit'];
        $new_note_name=mysql_real_escape_string($_POST['new_note_name']);
        $new_note_description=mysql_real_escape_string($_POST['new_note_description']);
        $query="UPDATE functions
                SET note_name='{$new_note_name}', 
                note_description='{$new_note_description}'
                WHERE note_name='{$old_note_name}'
                ";
      $result = mysql_query($query, $connection);}

这里是否可以通过链接进行SQL注入?如果可以,如何保护它?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-14 01:27:04

是的-由于某些原因,您无法转义$old_note_name,并且由于它位于查询的末尾,因此它是最易受攻击的变量。你似乎知道该怎么做...在该变量上使用mysql_real_escape_string,就像在其他变量上一样。

否则,这就是它所需要的:/main_edit.php?type=PHP&edit=note_name2';drop table functions;#

票数 -1
EN

Stack Overflow用户

发布于 2011-12-14 01:35:06

您可以使用预准备语句,如下所示:

代码语言:javascript
复制
$query = "UPDATE functions SET note_name=?, note_description=? WHERE note_name=?"; 
$statement = $connection->prepare($query);
$statement->bind_param('sss', $new_note_name, $new_note_description, $old_note_name);
$statement->execute();
票数 4
EN

Stack Overflow用户

发布于 2011-12-14 01:26:30

是的,因为你不是在逃避$_GET['edit'] ..试试这个怎么样:

代码语言:javascript
复制
$old_note_name=mysql_real_escape_string($_GET['edit']);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8493417

复制
相关文章

相似问题

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