drtoaamk20278 2014-09-21 14:34
浏览 31
已采纳

bindParam中的POST变量

Is it safe or not to use a POST var as below:

$stmt->bindParam(':'.$_POST[$field],$val);

or I need to check POST vars before?

  • 写回答

1条回答 默认 最新

  • douxiuyu2028 2014-09-21 14:49
    关注

    You should use $_POST variables as the value, not the parameter name.

    The $_POST variable could contain spaces or other characters that are not valid parts of a parameter name. I'm concerned that if you are doing what you show, that you have formed an SQL query like this:

    $sql = "SELECT * FROM mytable WHERE mycolumn = :" . $_POST[$field];
    

    Which is definitely not safe.

    And there's no reason for the parameter names to be set to user input like that. Parameter names should be fixed by you, the programmer:

    $sql = "SELECT * FROM mytable WHERE mycolumn = :myparam";
    

    Then you bind using the same name. By the way, as long as you're using a reasonably recent version of PHP, you don't need the colon prefix in the bind call. You only need it in the SQL.

    $stmt->bindParam("myparam", $_POST[$field]);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端