Есть ли способ сделать PHP-файл, чтобы он мог загружаться и исполняться только кодом Javascript, который я пишу? Я могу удостовериться, что кто-то не может прочитать мой JS, загрузить страницу PHP в своем браузере с их собственными переменными и внести несанкционированные изменения в мою базу данных? Любая помощь очень ценится.Есть ли способ убедиться, что PHP загружается только JS?
ответ
No.
Вы можете проверить, если $_SERVER['HTTP_X_REQUESTED_WITH']
установлен и равен «XMLHttpRequest», но это только HTTP заголовок, который может быть подделана.
Javascript просто делает стандартные HTTP-запросы, которые могут быть воспроизведены любым количеством способов. HTTP - очень простой протокол, который не дает возможности отличать клиентов любым надежным способом. Идентичные запросы идентичны. Вам нужно создать свою систему идентификации и авторизации пользователей самостоятельно поверх HTTP, это не является частью протокола. Серверу необходимо решить и ввести в действие то, что разрешено, и что не основано на правилах (которые вы устанавливаете), а не на тех, кто спросил.
Есть ли способ сделать файл PHP так, чтобы его можно было загружать и выполнять только с помощью кода Javascript, который я пишу?
Не надежно, нет. Любой запрос может быть подделан на стороне клиента. Этот метод неприемлем для установления безопасности. Вам придется использовать некоторую аутентификацию на стороне сервера.
Нет. Просто написать 10-канальную программу, например. Python, чтобы подделать любой пользовательский агент. Вы никогда не сможете доверять тому, что любой пользователь посылает вам когда-либо при любых обстоятельствах.
Это приведет к позору всей вашей семьи, всех ваших предков и приведет к тому, что ваши потомки будут навеки стигматизированы как потомство «этого парня».
Возможно, вы можете проверить заголовок запроса, отправленный Javascript. AJAX следует отправить эту строку:
X-Requested-With: XMLHttpRequest
JavaScript не отправляет этот заголовок по умолчанию, только определенные библиотеки JavaScript/фреймворки выполняют в своих реализациях Ajax. – BoltClock
И это не безопасно, -1. OP явно упоминает использование этого для целей безопасности –
- 1. Есть ли способ убедиться, что raw_input не является числовым?
- 2. Есть ли способ убедиться, что некоторые задачи не выполняются параллельно?
- 3. Есть ли способ убедиться, что предоставленное письмо работает?
- 4. Есть ли способ убедиться, что я вижу только устройства Chromecast, где будет работать мое приложение?
- 5. В большом приложении Java есть ли способ убедиться, что используется только TLSv1.2 или выше?
- 6. Есть ли способ, чтобы убедиться, что только один экземпляр scrollView имеет scrollsToTop == ДА?
- 7. Как убедиться, что в JVM есть только один экземпляр класса?
- 8. Есть ли более простой способ убедиться, что значение в массиве равно чем-то php?
- 9. Мне нужно убедиться, что в списке есть только определенные символы?
- 10. Есть ли способ показать только вращающуюся точку на ткани js?
- 11. Есть ли способ убедиться, что Decimal ('0) раз что-то действительно возвращает 0?
- 12. Есть ли способ скомпилировать или скомпилировать компоненты PHP/DHTML/JS?
- 13. Есть ли способ сохранить данные Ckeditor через PHP, без JS?
- 14. Как убедиться, что JTextField содержит только буквы?
- 15. Есть ли песочница PHP, что-то вроде JSFiddle для JS?
- 16. Есть ли способ сделать что-то подобное?
- 17. Есть ли способ убедиться, что Dispose() вызывается при исключении при десериализации класса IDisposable?
- 18. Есть ли простой способ использовать python tempfile в полке (и убедиться, что он очищает себя)?
- 19. Как убедиться, что включена только одна строка?
- 20. Есть ли способ убедиться, что соединение с разъемом Indy 9 действительно сломано (приложение Delphi 6)?
- 21. Есть ли способ убедиться, что классы, реализующие интерфейс, реализуют статические методы?
- 22. Как убедиться, что файлы CSS/JS не кэшируются в браузере?
- 23. Как убедиться, что нажата только одна клавиша
- 24. Как убедиться, что Flyway загружается до моего боба?
- 25. Есть ли что-нибудь о ext js?
- 26. Есть ли способ проверить, занят ли поток JS?
- 27. Есть ли способ узнать, что отправляется?
- 28. Есть ли (уже) способ сравнить 2 экземпляра модели, поле для поля, чтобы убедиться, что они равны?
- 29. Есть ли способ в C++ убедиться, что во время компиляции функция без шаблона нигде не используется?
- 30. Есть ли автоматизированный способ убедиться, что все части кода прошли тестирование устройства?
Большое спасибо. Возможно ли, что все, что вы можете указать на это, покажет мне, как создать надежную модель запроса и ответа JS/PHP? – dshipper
@dshipper Если это «открытый API», нет реального способа его защитить. Если вы требуете входа в систему пользователя и используете файлы cookie сеанса (которые также отправляются с каждым запросом AJAX), вы можете использовать это для идентификации определенного пользователя и решить, разрешено ли этому пользователю делать определенные вещи. Нет пользователя = одно правило безопасности для всех запросов = отсутствие авторизации. Лучше всего открыть новый вопрос с более подробной информацией о вашей ситуации, чтобы получить больше предложений. – deceze
Хорошо еще раз спасибо! – dshipper