Как удалить заголовки ответов при отправке ответа json на php?

#php #json #response-headers

#php #json #ответ-заголовки

Вопрос:

Я делаю ajax-запрос на страницу php, например page1.php . В page1.php У меня есть header("Location:page2.php?password=1234") код, который перенаправляет на page2.php с паролем в качестве параметра GET. page2.php выдает ответ в формате json. Проблема в том, что когда я проверяю элемент и проверяю ресурсы в браузере Safari, я могу видеть местоположение page2.php?password = 1234″ в части заголовка ответа. Это проблема безопасности. Пожалуйста, подскажите, как я могу удалить заголовки ответов при отправке ответа json? Я использую PHP 5.2.6.

Комментарии:

1. Для чего нужен этот пароль? И почему вы вообще делаете перенаправление?

2. Это выглядит неверным способом аутентификации??

3. «с паролем в качестве параметра GET», ПОЖАЛУЙСТА, скажите мне, что это не обычный текст, и вы используете SSL.

4. выдавая этот заголовок, вы указываете браузеру, куда идти. Браузер должен знать это, чтобы извлекать оттуда данные. Но поскольку браузер знает это, ничто не мешает пользователю найти его. Конец «безопасности». Полная остановка.

Ответ №1:

Почему просто не использовать SESSION для зарегистрированного пользователя? Или обычный cookie-файл?

Комментарии:

1. Я не могу использовать сеансы. Мне нужен способ удалить местоположение в заголовке ответа.

2. @sangman: если вам нужно перенаправить, у вас есть 3 способа: местоположение, мета-ссылка, решение на javascript. Это зависит от вас.

Ответ №2:

Вместо перенаправления на вторую страницу вы могли бы запросить его с первой страницы и отобразить его выходные данные.

Предполагая, что ваша установка поддерживает это, самый простой способ, вероятно, включить следующее в page1.php :

 readfile('http://yoursite.org/page2.php?password=1234');
  

Комментарии:

1. Это обязательное условие. у меня должна быть промежуточная страница

2. Что ж, в этом случае у вас все еще есть промежуточная страница, но она скрывает тот факт, что она использует page2.php от клиента. Однако не будет способа защитить эту настройку от javascript. Любой может прочитать исходный код javascript и увидеть, что вызов ajax выполняется для page1.php . Затем они могли бы посетить эту страницу в браузере, перенаправиться на страницу 2.php?password = 1234 и в любом случае увидеть пароль.

3. Я получаю пароль в виде сообщения в page1.php затем я добавляю его на страницу 2.php?password=$_POST[‘passwd’]. Мне нужен способ удалить местоположение в заголовке ответа

Ответ №3:

в качестве защиты от плохого человека вы могли бы использовать какие-нибудь криптографические функции (md5, sha1, crc32) для генерации хэша из пароля и передачи его вместо пароля. Хотя, лучше переделать всю систему, чтобы избежать этого.

Однако это обходное решение не отвечает на ваш вопрос.