2013-12-11 3 views
0

Я знаю, что это бесконечная битва, и у всех разные методы и мнения ... Мне нужен новый метод очистки/дезинфекции ввода пользователя в PHP. У меня были некоторые случайные файлы, появляющиеся в одном из моих каталогов на сайте ... Я не уверен, что это из-за похищенных паролей или что, но, очевидно, мой метод больше не работает !!!! Мне жаль, что это, вероятно, дубликат, но я устал от уязвимости моего сервера!Sanitize User Input через PHP

настоящее время я использую это:

function clean($value) { 
if (is_array($value)) { 
    foreach($value as $k => $v) { 
     $value[$k] = clean($v); 
    } } 
else { 
     if(get_magic_quotes_gpc() == 1) { 
      $value = stripslashes($value); 
     } 
     $value = trim(htmlspecialchars($value, ENT_QUOTES, "utf-8")); 
     $value = mres($value); 
} 
    return $value; 
} 

Тогда я обычно включаю это в верхней части каждого файла:

$POST = clean($_POST); 
$GET = clean($_GET); 

Пожалуйста, помогите, прежде чем маркировки меня, потому что я не могу получить черный список для рассылки спама снова !

+0

Я сомневаюсь, что эта функция будет иметь какое-то влияние на вашу проблему. –

+0

Что вы пытаетесь дезинфицировать? Ваш вопрос заставляет меня думать файлы - если вы это делаете, вы можете проверить по типу MIME. http://www.php.net/manual/en/ref.fileinfo.php –

+0

Извините, просто пользовательский ввод. Обычно я делаю что-то вроде '$ POST = clean ($ _ POST);' – C0NFUS3D

ответ

2

Эта функция, которую вы только что опубликовали, не имеет ничего с «случайными файлами, появляющимися» в ваших каталогах. они предназначены для дезинфекции строк, и вы также не дезинфицируете целые числа. Если вы используете эту функцию для дезинфекции вашего database inputs, вы должны сначала подтвердить данные, которые вы вводите, чтобы они соответствовали вашим потребностям, поэтому , если вы ожидаете целое число, вы убедитесь, что оно целое число, а не просто добавить к нему косые черты цитаты в строках, , если вы ожидаете строку, вы убедитесь, что это строка. Если вы планируете отображать какие-либо данные, введенные пользователем, тогда вы должны защитить от XSS. Если на вашем сервере есть уязвимости, проблема связана не с вашим сайтом, а с программным обеспечением, установленным на самом сервере. как для случайно отображаемых файлов, единственный способ, о котором я могу думать, - это разрешить некоторым пользователям загружать изображения или файлы, не задумываясь над тем, что их расширение, и, следовательно, позволяет людям загружать PHP-файлы или HTML-коды. Наконец, я просто хотел бы понять, что NO ONE может дать вам функцию санитизации, которая будет соответствовать вашим потребностям, вам нужно сделать ее для ваших конкретных потребностей, потому что никто, кроме вас, не знает, какие типы данных вы ожидаете.

Это общее правило для защиты вашего сайта от любого пользовательского ввода был ли файл загружен или пользователь регистрируется

  1. проверки данных и убедитесь, что это тип данных, которые вы ожидали.
  2. Санируйте эти данные, чтобы они не содержали вредоносных кодов, которые могут поставить под угрозу ваш сайт.
+0

Спасибо за информацию! Я все еще занимаюсь расследованием и по-прежнему не уверен, что происходит ... Я думал, что это может быть так, как я обрабатывал пользовательский ввод, но я также проверяю журналы сервера для чего-нибудь подозрительного ... – C0NFUS3D