首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addslashes()是否足够安全,可以避免SQL注入?

addslashes()是否足够安全,可以避免SQL注入?
EN

Stack Overflow用户
提问于 2014-11-17 13:23:06
回答 2查看 5.6K关注 0票数 2

我在页面上接收的所有参数上都使用了addslashes()。并在mysql查询中围绕这些变量应用单个法庭。下面是我的代码:

代码语言:javascript
复制
$string             = addslashes($_POST['string']);
$queryString            = " INSERT INTO general (description) VALUES ('$string')";
$query                  = mysql_query($queryString);

代码语言:javascript
复制
$queryString            = "SELECT description FROM general WHERE description = '".$string."'"; 
$query                  = mysql_query($queryString);

在这段代码中有没有可能出现SQL注入?

EN

回答 2

Stack Overflow用户

发布于 2014-11-17 13:54:31

阅读本文:

摘录:

如果我想尝试对MySQL数据库进行

注入攻击,单引号用反斜杠转义是一件很糟糕的事情。但是,如果您使用addslashes(),我就走运了。我需要做的就是注入类似于0xbf27的东西,addslashes()将其修改为0xbf5c27,这是一个有效的多字节字符,后跟一个单引号。换句话说,尽管您在转义,我仍然可以成功地插入一个引用。这是因为0xbf5c被解释为单个字符

注意:

.它们不再由and are officially deprecated维护。看到了吗?相反,学习,并使用PDOMySQLi - this article将帮助您决定使用哪种方法。如果您选择PDO,here is a good tutorial

票数 2
EN

Stack Overflow用户

发布于 2014-11-17 13:58:20

嘿,mysql_connect函数现在已经被弃用了,因为它发出了巨大的警告。但是,如果您坚持使用已弃用的,则必须使用mysql_real_escape_string()函数清理所有变量,并将其传递给strip_tags()函数

但是你为什么不通过预准备语句更好地使用Mysqli,或者更好地使用PDO,我认为这是最好的。Mysqli和PDO执行自动数据清理,从而确保SQL注入攻击是不可能的。

如果您准备好使用PDO,那么我可以帮助您开始。我希望这对你有所帮助

PDO连接

代码语言:javascript
复制
<?php

$db = new PDO (

    'mysql:host=localhost;dbname=sectona_db;charset=utf8', 

    'root', // username



    'root99' // password

);

?>




<?php



require("pdo.php"); 



$username = $_POST['useruname'];
$photo = $_POST['photo'];


$statement = $db->prepare('INSERT INTO users (username,photo)
                          values
                                                   (:username,:photo)');

$statement->execute(array( 

':username' => $name,
':photo' => 'profile.png'


));
echo ' data submitted';

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

https://stackoverflow.com/questions/26966056

复制
相关文章

相似问题

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