2015-12-14 2 views
1

Я читал о Суперглобалах и безопасности. В качестве «правила», я использую htmlentities() для всех входов и аналогично и дляСуперглобали и htmlentities

$_SERVER['HTTP_REFERER']; 
$_SERVER["REQUEST_METHOD"]; 
$_POST['thename']; 
$_GET['thename']; 

Но так как я начинающий я не знаю, если я должен использовать его с некоторыми или всеми другие суперглобалы. Я не знаю о безопасности и, возможно, кто-то может «что-то» сделать (или изменить) вредоносный код.

Должен ли я использовать его только для них? Или другие, чтобы рассмотреть?

Большое спасибо.

Я прошу научиться хорошему.

+0

чрезвычайно широкий, полностью зависит от того, что вы собираетесь делать со значением из супер-глобального. нет никакой магической функции, которую вы должны запускать на всех из них (или php сделает это для вас). Автоматически используя 'htmlentities()' или 'htmlspecialchars()' - плохая идея –

ответ

0

Не используйте htmlentities(), используйте htmlspecialchars().

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

Другие функции, которые вы должны использовать: urlencode() или rawurlencode().

+0

'if (htmlspecialchars ($ _ SERVER ['HTTP_REFERER ']) == "http://google.com") {// я вижу проблемы}; 'этот совет для меня слишком чересчур общий и полный ошибок –

+0

Какие проблемы вы видите на своем простом примере? Я бы вообще не использовал 'htmlspecialchars()' и использовал строгий сопоставление '==='. Это правильно, вопрос имеет огромное пространство ответов, потому что он вообще ничего не указывает - я попытался дать конкретный ответ для определенного варианта использования (встраивание строк в HTML) с неожиданным вызовом функции и еще кое-что. Возможно, я пропустил цель. – Sven

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