【问题标题】:SQL-Injection prevention with if/else [duplicate]使用 if/else 预防 SQL 注入 [重复]
【发布时间】:2014-12-15 18:05:45
【问题描述】:

我只是考虑了我的 php 脚本的安全性,并阅读了很多关于 sql 注入的信息。现在我有一个问题要救我。当我的脚本不接受像 ' , ;" ?或者我只是从我的 Android 应用程序中捕捉到这个?所以我只是在这些字符中看到了问题。我是对的吗?还是有什么我看不到的?如果没有,最简单的方法是什么?

【问题讨论】:

  • 请更具体。为了防止 sql 注入,请使用准备好的语句
  • 我没有特别问我如何防止它。我只是问我是否可以用我的想法达到相同的解决方案。所以不要接受像'和"这样的字符...

标签: php android mysql


【解决方案1】:

永远不要检查注入的字符串,你需要做的就是不要连接变量。

  1. 使用准备好的语句。

http://www.wikihow.com/Prevent-SQL-Injection-in-PHP 提取的mysqli 中的“示例”

$name = $_GET['username'];

if ($stmt = $mysqli->prepare("SELECT password FROM tbl_users WHERE name=?")) {

    // Bind a variable to the parameter as a string. 
    $stmt->bind_param("s", $name);

    // Execute the statement.
    $stmt->execute();

    // Get the variables from the query.
    $stmt->bind_result($pass);

   // Fetch the data.
   $stmt->fetch();

   // Display the data.
   printf("Password for user %s is %s\n", $name, $pass);

   // Close the prepared statement.
   $stmt->close();

}

阅读:http://www.veracode.com/security/sql-injection


如果您的想法是检查 ' 或 " 或 ; 的变量,这是一项艰巨的工作,最终可以通过使用 PDO 语句来解决。

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2022-01-18
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多