Как предотвратить внедрение SQL при использовании Jquery Query Builder - PullRequest
0 голосов
/ 28 апреля 2018

Я использую Jquery Query Builder для создания пользовательских запросов SQL. И я использую Ajax для отправки данных на сервер и получения результатов.

Но проблема в том, что этот AJAX-запрос виден через Агенты инспектора. И кто-то может легко изменить запрос.

Так что я пытаюсь выяснить способы предотвращения инъекций sql. Вот мой код Javascript:

// Define Query Option
var query_options = {
plugins: [
'bt-checkbox','sortable'
],
filters: [
{
    id: 'CITY',
    label: 'city',
    type: 'string',
    input: 'select',
    multiple: true,
    plugin: 'select2',
    plugin_config: {
      multiple: "multiple",
      data: []
    },
    operators: ['is_not_null', 'in', 'not_in', 'not_equal'],
    valueSetter: function(rule, value) {}
  }
]
}

// Get 'Cities' to use it in PHP File
$.get('custom/getCities', function(q_cities) {
  if (q_cities.length) {
    q_cities.forEach( function(element, index) {
      query_options.filters[0].plugin_config['data'].push(element['CITY']);
    });
  }
}, 'json'),


// Create Query
// @NOTE: This is where Sql injection can be made.
$('#btn-get').on('click', function() {
    var result = $('#builder-basic').queryBuilder('getSQL');
    var query = result.sql;
    if (!$.isEmptyObject(result)) {
    $.ajax
    ({ 
      url: 'custom/customquery',
      // This part is vulnerable to Sql injections.
      data: { query: query },
      type: 'post',
      dataType: "HTML",
      success: function(o)
      {
        if (o.length) {
            console.log(o);
        }
      }
    });
    }
});

А это мой код PHP:

// Server Side PHP script
public function customquery()
{
    if(isset($_POST['query'])){
        $query = $_POST['query'];
    }

    $qry = "SELECT * FROM MYTABLE WHERE " . $query;
    $result = $this->db->select($qry);
    echo json_encode($result);
}

Я знаю, что есть способы предотвратить AJAX Sql инъекцию Но я не удалось найти ответы на конкретные условия, такие как Jquery Query Builder .

Заранее спасибо.

...