Php 在AngularJS中创建自己的查询生成器(如Symfony)安全吗

Php 在AngularJS中创建自己的查询生成器(如Symfony)安全吗,php,angularjs,sql-injection,Php,Angularjs,Sql Injection,我在发送表名的控制器内进行查询,条件如WHERE子句等。。在我的服务中创建查询 studentController.js let student_ctr = this; let em = default_service.query(); em.columns('*') em.from('user_accounts', 'o') em.innerJoin('user_accounts_credentials', 'uac', 'uac.user_id = o.uuid') em.getResul

我在发送表名的控制器内进行查询,条件如
WHERE
子句等。。在我的服务中创建查询

studentController.js

let student_ctr = this;

let em = default_service.query();
em.columns('*')
em.from('user_accounts', 'o')
em.innerJoin('user_accounts_credentials', 'uac', 'uac.user_id = o.uuid')
em.getResult({
    controller: student_ctr,
    variable: 'get_user_account'
});


console.log(student_ctr.get_user_account);
let path = 'app/base/model/defaultModel?_='; // Sends all Common Query

return {
     query: () => {
          let sql = ' SELECT ';

          let columns = a => string += a;
          let from = (a, b) => string += ' FROM ' + a + ' AS ' + b;
          let leftJoin = (a, b, c) => string += ' LEFT JOIN '  + a + ' AS ' + b + ' ON ' + c;
          let getResult = o => {
              $http({
                   url: path + 'query',
                   method: "POST",
                   data: { q: string } // Sends the SQL string to the defaultModel.php
              })
              .then(response => {
                   let name= o.variable;
                   let model = $parse(name);
                   model.assign(o.controller, response.message); // I am going to create a scope variable.
              })
          }
     
          return { columns, from, leftJoin, getResult }
     }
}
注意:在
em.getResult()
中,我发送了控制器
student\u ctr
和一个变量
get\u user\u account
来创建一个范围变量(您可以在defaultService中看到我是如何将其转换为范围变量的)。可以传递控制器的整个对象吗?只是出于好奇

defaultService.js

let student_ctr = this;

let em = default_service.query();
em.columns('*')
em.from('user_accounts', 'o')
em.innerJoin('user_accounts_credentials', 'uac', 'uac.user_id = o.uuid')
em.getResult({
    controller: student_ctr,
    variable: 'get_user_account'
});


console.log(student_ctr.get_user_account);
let path = 'app/base/model/defaultModel?_='; // Sends all Common Query

return {
     query: () => {
          let sql = ' SELECT ';

          let columns = a => string += a;
          let from = (a, b) => string += ' FROM ' + a + ' AS ' + b;
          let leftJoin = (a, b, c) => string += ' LEFT JOIN '  + a + ' AS ' + b + ' ON ' + c;
          let getResult = o => {
              $http({
                   url: path + 'query',
                   method: "POST",
                   data: { q: string } // Sends the SQL string to the defaultModel.php
              })
              .then(response => {
                   let name= o.variable;
                   let model = $parse(name);
                   model.assign(o.controller, response.message); // I am going to create a scope variable.
              })
          }
     
          return { columns, from, leftJoin, getResult }
     }
}
通过所有这些,我创建了一个SQL字符串
SELECT*FROM user\u accounts AS o internal JOIN user\u accounts\u credentials AS uac ON uac.user\u id=o.uuid

我觉得这很有帮助,快速,整洁。虽然在我的
DOM的Network>头中,用户实际上可以看到defaultModel.php中传递的字符串

在经历了这么多的安逸之后,我只是想知道它是否安全

更新
我在问,如果有黑客或其他可能通过暴露传递给defaultModel.php的DOM>NETWORK>HEADERS中的字符串来操纵我的数据库是否安全,那么您会问直接将SQL传递给php是否可以?如果您不介意让客户机控制您的数据库,那么一定要这样做。撇开玩笑不谈,这听起来是一个非常糟糕的主意,因为您不再控制执行什么查询了,这是一个选择吗?这是一份放弃声明吗?服务器不知道,只会执行所有操作。我想这是一个快速选择。尽管如此,我计划不仅创建SELECT语句,还创建INSERT、UPDATE和DELETE语句。我会尽可能地让它充满活力。插入where子句、order by等。。我想问的是,如果有黑客或其他东西仅仅通过暴露传递给PHPNo的DOM>NETWORK>头中的字符串就可以操纵我的数据库,那么这是否安全?如果有人注意到你正在向该端点传递SQL查询,然后他们打开Postman并提交自己的查询,那么这就不安全了。如果是客户端,好吗?或者,如果我只是传递部分参数并在php中创建字符串呢?没有办法从前端隐藏发布的url。