【问题标题】:Using PHP Object values in AJAX在 AJAX 中使用 PHP 对象值
【发布时间】:2011-01-23 03:58:25
【问题描述】:

我正在做一个宠物项目。我有一个 php 类。在 HTML 中,我创建了该对象的实例。所以同一个页面可以包含很多实例。现在,我必须进行 ajax 调用。 ajax 调用基于对象的实例。在 ajax 调用中发送的数据可以包含数据库表的名称等。我想知道那有多安全。有什么想法吗?

【问题讨论】:

    标签: php javascript ajax security oop


    【解决方案1】:

    攻击者想知道:

    1. 如何把东西塞进去,
    2. 要塞进去什么。

    您将免费赠送 2 号。

    【讨论】:

      【解决方案2】:

      最好调用一个函数,它知道要查询的数据库的字段,并将传递的值作为参数。

      【讨论】:

      • 我明白你的意思。但唯一的问题是表名是对象实例的参数。我根本不知道如何传递该表名。
      • 我猜不命名用户看到的参数“table_name”会成功的一半=)
      【解决方案3】:

      好吧,考虑一下这种情况:

      a) 您有一个 Javascript 函数,它执行 AJAX 调用以在您的服务器上执行查询,它类似于:

      function doQuery(tablename, fieldname, whereclause) { ... }
      

      b) 在服务器上,您使用该 AJAX 调用的传递参数动态构建查询:

      $query = "SELECT $fieldname FROM $tablename WHERE $whereclause";
      

      如何阻止恶意用户向您的 AJAX 函数注入调用

      fieldname = '*'
      tablename = 'mysql.user'
      whereclause = '1=1'
      

      你最终得到

      SELECT * from mysql.user WHERE 1=1
      

      然后您的整个 MySQL 用户名/密码集合就会愉快地出门了。

      永远不要让用户提供的数据控制您的代码的功能,尤其是在与“外部”系统(例如数据库)交互时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-15
        • 2012-12-20
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        相关资源
        最近更新 更多