2011-01-23 4 views
0

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

ответ

1

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

  1. как-то в проскальзывать,
  2. что проскользнуть в

Вы разыгрываете номер-бесплатно..

1

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

+0

Я вижу вашу точку зрения. Но единственная проблема заключается в том, что имя таблицы является параметром для экземпляра объекта. Я просто не знаю, как передать это имя таблицы. – abhisek

+0

Я предполагаю, что не именовать пользовательский параметр «table_name» сделает половину трюка =) – Vlad

0

Ну, рассмотреть этот случай:

а) У вас есть функция Javascript, что делает вызов AJAX для выполнения запроса на сервере, и это что-то вроде:

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

б) На сервер, динамически построить запрос, используя переданные через параметры этого AJAX вызова:

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

Что остановить злоумышленник инъекции вызов вашей функции AJAX с

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

Вы в конечном итоге с

SELECT * from mysql.user WHERE 1=1 

и вся ваша коллекция MySQL имя пользователя/пароль идет счастливо в дверь.

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

Смежные вопросы