Остановите пользователей, вводящих данные AJAX, посетив URL-адрес конечной точки - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть простая форма, которая отправляет данные формы в update.php, который затем вставляет данные в таблицу в базе данных MySQL.

$.ajax({
  url: '/actions/update.php',
  type: 'post',
  data: {
    name: 'name-data',
    description:'description-data'
  },
  success: function( data, textStatus, jQxhr ){
    console.log(data);
  },
  error: function( jqXhr, textStatus, errorThrown ){
    console.log(errorThrown);
  }
});

Форма работает и данные отлично добавляются в базу данных. Проблема заключается в том, что теоретически, если пользователь знает URL-адрес, на котором размещаются данные (что они могут сделать, если взглянуть на исходный код), он может посетить этот URL-адрес и добавить записи в обход формы. например Посещение /actions/update.php добавит пустую запись в базу данных.

Есть ли возможность заблокировать пользователей для этого файла / каталога, в то же время позволяя размещать в нем данные?

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

Есть ли возможность заблокировать пользователей для этого файла / каталога, пока еще разрешить размещение данных на нем?

Это неправильный взгляд на проблему.

Если клиентский JavaScript может сделать этот запрос, то пользователь может сделать любой запрос к тому же файлу PHP.

Вместо этого, в вашем PHP вы должны проверить, что передаваемые параметры соответствуют вашему определению допустимого.

Например, вам может потребоваться проверить, что параметры name и description имеют определенную длину символа или что текущий зарегистрированный пользователь имеет разрешение на обновление соответствующей записи.

Тщательно подумайте о том, что является и не является приемлемым. После того, как вы добавили эти проверки, не будет иметь значения, будет ли пользователь «посещать [и] этот URL и добавлять записи в обход формы».

0 голосов
/ 08 сентября 2018

Я думаю, что возможное решение состоит в том, что вы можете блокировать пользователей, если ваши переменные name и description не установлены с post запросом

if(isset($_POST['name']) && isset($_POST['description']))
  {
    //do your task
  }
  else
  {
    header('Location:otherpage.php')// redirecting it to other page if user visits it directly
  }
0 голосов
/ 08 сентября 2018

Если пользователи могут посещать URL, это означает, что запрос GET разрешен. Вам нужно только принять POST-запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...