2015-01-13 3 views
1

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

Вот пример:

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 целиком, а затем использовать include? Есть ли разница?

ответ

1

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

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

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

Эти переменные должны быть безопасными при условии, нет Local File Inclusion уязвимостей (или аналогичный) на вашем сайте. Убедитесь, что какой-либо другой запущенный код не читает локальные файлы и отображает их, иначе гнусный пользователь может манипулировать ими для отображения ваших учетных данных. Рассмотрите возможность хранения этих данных в зашифрованной базе данных (всегда полезно разделить код и данные там, где это возможно).

echo $display; 

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

3

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

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

+0

Хорошо спасибо. Поэтому, когда я видел, как хакеры используют сайт в адресной строке и показывают некоторые из кода веб-сайта, заключается только в том, что их форма не была должным образом экранирована/дезинформирована? – m1xolyd1an

+2

@ m1xolyd1an Дело в том, что как вы имеете дело с данными, а не с данными. Любая уязвимость вызвана неправильной интерпретацией некоторых данных (которые передаются или передаются откуда-то) – zerkms

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