Использование значений объектов PHP в AJAX - PullRequest
0 голосов
/ 23 января 2011

Я работаю над любимым проектом.У меня есть класс php.в HTML я делаю экземпляры этого объекта.Таким образом, одна и та же страница может содержать много экземпляров.Теперь я должен сделать ajax-вызовы.вызов ajax основан на экземплярах объекта.данные, отправляемые в вызовах ajax, могут содержать имена таблиц базы данных и т.п.Мне было интересно, насколько это безопасно.есть мысли?

Ответы [ 3 ]

1 голос
/ 23 января 2011

Лучше вызвать функцию, которая знает поля БД для запроса и принимает переданные значения в качестве параметров.

1 голос
/ 23 января 2011

Злоумышленник хотел бы знать:

  1. как вставить что-то,
  2. что подсунуть.

Вы отдаете номер 2 бесплатно.

0 голосов
/ 23 января 2011

Хорошо, рассмотрим этот случай:

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 с радостью выйдет за дверь.

Никогда и никогда не позволяйте предоставленным пользователем данным контролировать то, что делает ваш код,особенно когда дело доходит до взаимодействия с «внешними» системами, такими как база данных.

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