безопасность — переменные PHP безопасны в POST

Я делаю кнопку на своем сайте, которая при нажатии вызывает API с другого сайта, используя PHP. Я должен поместить свои данные для входа в систему в качестве переменных в моем PHP. Я видел некоторые эксплойты, когда хакеры могут получить значения переменных PHP, набрав что-то в адресной строке? Не уверен, что это XSS или SQL-инъекция или что-то еще, но я видел, где он будет печатать код PHP в формате XML.

Вот пример:

if (isset($_POST['submit'])) {
$time = time(true);
$prize = 200;
$ID = "my_secret_API_ID";
$Password = "my_secret_API_Password";
$APIcall = json_decode(file_get_contents("https://apiwebsite/developer/$ID/get_info&pw=$Password"), true);
$display = $APIcall ['some_info'];
echo $display;
}

Мои данные для входа безопасны? Должен ли я сделать их глобальными переменными вне $ _POST? Должен ли я определить их в отдельном файле PHP полностью, а затем использовать включение? Есть ли разница?

1

Решение

Я чувствую, что другой ответ на самом деле не отвечает на вопрос, который вы задали. Ответ Ohgodwhy относится к вашему $_POST Переменные и плакат верен, что если вы не используете их, то вы не уязвимы (если только PHP или другой компонент, который вы использовали, был — маловероятно, хотя).

Я думаю, что ваш вопрос был конкретно связан с этой частью вашего кода?

$ID = "my_secret_API_ID";
$Password = "my_secret_API_Password";

Эти переменные должны быть безопасными, если нет Локальное включение файлов уязвимости (или аналогичные) на вашем сайте. Убедитесь, что любой другой выполняемый код не читает локальные файлы и отображает их, в противном случае злонамеренный пользователь может манипулировать ими для отображения ваших учетных данных. Можно хранить их в зашифрованной базе данных (всегда полезно разделять код и данные, где это возможно).

  echo $display;

Этот бит кода может быть уязвимым, если https://apiwebsite/developer/$ID/get_info&pw=$Password когда-либо возвращает некодированные данные, которые находятся вне вашего контроля. например если есть пользовательские данные в API и злой пользователь поставил некоторые <script> код там, ваш сайт будет работать, если вы не кодируете через htmlentities. Это было бы XSS уязвимость. Ваш существующий код в порядке, хотя, если вы полностью доверяете apisite правильно кодировать значения, которые находятся вне их контроля (и вы полностью доверяете apisite сам).

1

Другие решения

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

Isset возвращает только логические значения и, следовательно, не может манипулировать таким образом, чтобы представить любое ваше приложение.

3

По вопросам рекламы [email protected]