代码之家  ›  专栏  ›  技术社区  ›  Dipak

清理输入数据是否会阻止sql注入?[复制]

  •  -1
  • Dipak  · 技术社区  · 6 年前

    static column name 在这里是不可能的。所以,我用 santize . 好像sql注入就足够了 bind param 方法。什么是最好的方法?

    $id = filter_var($_POST['id'], FILTER_SANITIZE_STRING);
    $text = filter_var($_POST['text'], FILTER_SANITIZE_STRING);
    $column_name = filter_var($_POST['column_name'], FILTER_SANITIZE_STRING);
    $result = $con->query("UPDATE menu SET $column_name='$text' WHERE mid=$id") OR die($con->error);  
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   deceze    6 年前

    您可以清除 语法 意思 . 按其定义,SQL注入意味着您可以使查询执行与预期不同的操作。在这里,您的查询完全开放,任何人都可以替换列名,列名对查询结构至关重要。通过允许用户更改列,您无法控制查询中哪些列可能会被更改,根据定义,查询是SQL注入的一种形式。

    你需要 白名单 任何 id