2010-12-27 3 views
0

Есть ли способ сделать PHP-файл, чтобы он мог загружаться и исполняться только кодом Javascript, который я пишу? Я могу удостовериться, что кто-то не может прочитать мой JS, загрузить страницу PHP в своем браузере с их собственными переменными и внести несанкционированные изменения в мою базу данных? Любая помощь очень ценится.Есть ли способ убедиться, что PHP загружается только JS?

ответ

5

No.

Вы можете проверить, если $_SERVER['HTTP_X_REQUESTED_WITH'] установлен и равен «XMLHttpRequest», но это только HTTP заголовок, который может быть подделана.

Javascript просто делает стандартные HTTP-запросы, которые могут быть воспроизведены любым количеством способов. HTTP - очень простой протокол, который не дает возможности отличать клиентов любым надежным способом. Идентичные запросы идентичны. Вам нужно создать свою систему идентификации и авторизации пользователей самостоятельно поверх HTTP, это не является частью протокола. Серверу необходимо решить и ввести в действие то, что разрешено, и что не основано на правилах (которые вы устанавливаете), а не на тех, кто спросил.

+0

Большое спасибо. Возможно ли, что все, что вы можете указать на это, покажет мне, как создать надежную модель запроса и ответа JS/PHP? – dshipper

+0

@dshipper Если это «открытый API», нет реального способа его защитить. Если вы требуете входа в систему пользователя и используете файлы cookie сеанса (которые также отправляются с каждым запросом AJAX), вы можете использовать это для идентификации определенного пользователя и решить, разрешено ли этому пользователю делать определенные вещи. Нет пользователя = одно правило безопасности для всех запросов = отсутствие авторизации. Лучше всего открыть новый вопрос с более подробной информацией о вашей ситуации, чтобы получить больше предложений. – deceze

+0

Хорошо еще раз спасибо! – dshipper

0

Есть ли способ сделать файл PHP так, чтобы его можно было загружать и выполнять только с помощью кода Javascript, который я пишу?

Не надежно, нет. Любой запрос может быть подделан на стороне клиента. Этот метод неприемлем для установления безопасности. Вам придется использовать некоторую аутентификацию на стороне сервера.

0

Нет. Просто написать 10-канальную программу, например. Python, чтобы подделать любой пользовательский агент. Вы никогда не сможете доверять тому, что любой пользователь посылает вам когда-либо при любых обстоятельствах.

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

-2

Возможно, вы можете проверить заголовок запроса, отправленный Javascript. AJAX следует отправить эту строку:

X-Requested-With: XMLHttpRequest 
+1

JavaScript не отправляет этот заголовок по умолчанию, только определенные библиотеки JavaScript/фреймворки выполняют в своих реализациях Ajax. – BoltClock

+1

И это не безопасно, -1. OP явно упоминает использование этого для целей безопасности –

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