2016-01-31 2 views
0

Во время просмотра в Интернете различных решений для моего веб-сайта я всегда проверяю риски безопасности, особенно когда речь идет о глобальных глобальных серверах.

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

Я использую функцию, чтобы проверить погоду есть конкретная строка в моей URL:

if (strpos($_SERVER['REQUEST_URI'], 'foo') !== false) : 
// do something 
endif; 

Должен ли я беспокоиться о XSS или инъекции удовольствии?

+0

Вряд ли, но да, вы делаете. Это то, что поставляется с заголовками http, поэтому его можно настроить независимо от того, чего хочет злоумышленник. Но если вы не пропустите его, чтобы оценить или распечатать его, не убегая, вы не должны беспокоиться. – ggg

ответ

1

Нет. Вы можете оставаться расслабленным.

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

Основная проблема безопасности глобальных переменных находятся в года назад популярный директивы register_globals (удален в PHP 5.4.0): с помощью этой опции активной, все GET и POST переменные были преобразованы в глобальные переменные (т.е. $_GET['user']: $user).

Так, вызов URL, как http://example.com/index.php?destroyall=1, если index.php является:

if($_GET['areYouSure']==1) 
{ 
    $destroyall = 1; 
} 
if($destroyall) 
{ 
    deleteAllMyFilesNow(); 
} 

deleteAllMyFilesNow() выполняется, даже если areYouSure является ложным, потому что $_GET[destroyall] устанавливается непосредственно значение $destroyall.

Чтобы понять, насколько register_global популярностью, считает, что PHP site отчеты:

Пожалуй, наиболее спорным моментом в PHP, когда значение по умолчанию для директивы PHP register_globals с ON на OFF

+0

Привет, чувак, спасибо за ваш ответ и извините за мой поздний ответ. Это помогло много! –

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