相关文章推荐
冷冷的草稿本  ·  Spring Security ...·  2 年前    · 
逼格高的西瓜  ·  基于深度残差收缩网络的电力系统暂态频率安全集 ...·  2 年前    · 
行走的键盘  ·  PHP图片压缩_php图片等比压缩_php多 ...·  2 年前    · 
闯红灯的松球  ·  UML类图符号 各种关系说明以及举例 - ...·  2 年前    · 
正直的洋葱  ·  死磕hyperledger ...·  2 年前    · 
Code  ›  使用PHP的反射类来执行MySQL查询安全吗?开发者社区
mysql php mysql函数
https://cloud.tencent.com/developer/ask/sof/101983986
活泼的登山鞋
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 使用PHP的反射类来执行MySQL查询安全吗?

Stack Overflow用户
提问于 2015-10-08 04:57:00
EN

背景

我一直在从头开始开发一个内容管理系统。由于经验的原因,它主要是从零开始开发的,但它也将在以后使用。

我用PHP语言开发了一个扩展 mysqli 类的 DatabaseManager 类。我正在使用它做MySQL查询和连接。我开发的一个函数传递SQL查询字符串(已参数化),后跟要替换的正确值的数组。

TL;DR

长话短说,我使用 ReflectionClass 将参数绑定到SQL查询和执行。我很好奇这是一种安全的方法,还是有另一种最适合的方法?

该方法

这是 DatabaseManager::do_query() 方法:

function do_query($sql, $values){
    if(!isset($this->connect_error)){
        $num_vals = count($values);
        $i = 0;
        $type = "";
        while($i < $num_vals){
            if(is_int($values[$i]) == true)
                $type .= "i";
            elseif(is_string($values[$i]) == true)
                $type .= "s";
            $i++;
        $i = 0;
        while($i < $num_vals){
            $values2[$i] = &$values[$i];
            $i++;
        $values2 = array_merge(array($type), $values2);
        $expr = $this->prepare($sql);
        if($expr != false){
            $ref = new ReflectionClass('mysqli_stmt');
            $method = $ref->getMethod("bind_param");            
            $method->invokeArgs($expr, $values2);
            $expr->execute();
            return "Success";
        }else{
            $error_string = "Error: Query preparation resulted in an error. ";
            $error_string .= $this->error;
            __TGErrorHandler(TG_ERROR_DB_PREP);
            return $error_string;
 
推荐文章
冷冷的草稿本  ·  Spring Security spring security BCryptPasswordEncoder加密解密和随机盐 - 掘金
2 年前
逼格高的西瓜  ·  基于深度残差收缩网络的电力系统暂态频率安全集成评估 - 知乎
2 年前
行走的键盘  ·  PHP图片压缩_php图片等比压缩_php多个图片压缩 - 腾讯云开发者社区 - 腾讯云
2 年前
闯红灯的松球  ·  UML类图符号 各种关系说明以及举例 - duanxz - 博客园
2 年前
正直的洋葱  ·  死磕hyperledger fabric源码|kafka共识排序 - 掘金
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号