【问题标题】:PHP MySQL database problemPHP MySQL数据库问题
【发布时间】:2011-02-13 00:07:20
【问题描述】:

代码 1:

$dbc = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass) or die ("Cannot connect to MySQL :" .mysql_error()); mysql_select_db($this->dbName) or die ("Database not Found :" .mysql_error()); } } 类用户扩展 dbConnect { 变量$名称; 功能用户输入($q){ $sql = "INSERT INTO $this->dbTable set name = '".$q."'"; mysql_query($sql) 或死 (mysql_error()); } } ?>
这是调用类的代码。 userInput($q); ?>


代码 2:

我的 代码 1 保存在我的数据库中:

保存多个!

我的代码 2 保存在我的数据库中:


我的代码 1 有什么问题?

【问题讨论】:

  • 你希望它首先做什么?
  • 除了您的实际问题:请记住在将每个传入数据发送到数据库之前对其进行验证。否则,您的脚本将易受 SQL 注入攻击。以mysql_real_escape() 为例。
  • 你是如何调用 Code1 中的 userInput() 函数的?
  • 我们可以从您的第一个示例中看到更多代码吗?
  • 再看一遍。我把代码调用了userInput()函数。

标签: php mysql


【解决方案1】:

关于 SQL 注入漏洞,我建议对 PDO 使用准备好的语句。它易于使用且非常安全。

更多信息:http://php.net/manual/en/pdo.prepared-statements.php

【讨论】:

    【解决方案2】:

    它对 SQL 注入非常开放,尝试拥有一个 db.php 文件,并在每个需要 db 的 php 文件的开头只 require_once。

    【讨论】:

      【解决方案3】:

      好吧,代码 1 对 SQL 注入开放,因为您没有转义 $q。至于为什么会得到两条记录,这个问题不在代码1中,而可能在调用userInput的代码中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-05
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        • 2019-09-13
        相关资源
        最近更新 更多