首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止SQL注入

防止SQL注入
EN

Stack Overflow用户
提问于 2011-01-21 00:14:59
回答 6查看 7.1K关注 0票数 6

我正在开发一个网站,我试图确保连接部分的安全。

我在$login上使用了addslashes函数来阻止SQL注入,但是一些朋友告诉我这还不够安全。然而,他们并没有告诉我如何利用这个漏洞。

我怎么能/你能破解这个代码?我怎样才能保证它的安全?

代码语言:javascript
复制
<?php

    if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
    {
        extract($_POST);
        $sql = "SELECT pseudo, sex, city, pwd FROM auth WHERE pseudo = '".addslashes($login)."'";
        $req = mysql_query($sql) or die('Erreur SQL');
        if (mysql_num_rows($req) > 0)
        {
            $data = mysql_fetch_assoc($req);
            if ($password == $data['pwd'])
            {
                $loginOK = true;
            }
        }
    }
    ?>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-01-21 00:16:59

您应该使用mysql_real_escape_string来转义查询中的字符串输入参数。使用类型转换来清理数值参数,使用白名单清理标识符。

在引用的PHP页面中,有一个在登录表单中使用sql注入的示例。

一个更好的解决方案是使用预准备语句,您可以通过使用PDOmysqli来实现。

票数 14
EN

Stack Overflow用户

发布于 2011-01-21 00:32:34

您正在以明文形式存储密码!这是一个重大的安全问题,如果我见过的话。解决方法:至少使用(每个用户)加盐的密码散列,例如here

票数 5
EN

Stack Overflow用户

发布于 2011-01-21 00:18:12

使用:

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

https://stackoverflow.com/questions/4749588

复制
相关文章

相似问题

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