[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита данных которые вводит пользователель
bastar
У меня есть функция защиты строки которую ввел пользователь

function Protect($string)
{
$string = trim($string);
$string = mysql_real_escape_string($string);
$string = htmlspecialchars($string);
$string = strip_tags($string);
$string = stripslashes($string);
$string = addslashes($string);

return $string;
}

и есть функция для защиты пароля

function ProtectPassword($password)
{
$password = trim($password);
$password = htmlspecialchars($password);
$password = strip_tags($password);
$password = stripslashes($password);
$password = md5($password);

return $password;
}

скажите насколько правильно защищены в данном случае данные и на сколько уместно использование данных функций?



Спустя 8 минут, 22 секунды (5.04.2011 - 20:33) twin написал(а):
В помойку. Совершенно непрвильно. Тоесть абсолютно.
Здесь посмотри

Спустя 20 минут, 26 секунд (5.04.2011 - 20:53) Игорь_Vasinsky написал(а):
ого... кландайк от Твина

Спустя 12 минут, 23 секунды (5.04.2011 - 21:06) alex12060 написал(а):
bastar

Ты случайно не phpacademy смотрел на ютьюбе?
Там автор использует такие-же функции...

Я урезал их до такого:


function Protect($string)
{
$string = trim($string);
$string = mysql_real_escape_string($string);

return $string;
}

// А здесь вообще противоречие самого себя...
$string = stripslashes($string); // Удаляем слеши перед кавычками
$string = addslashes($string); // Добавляем слеши перед кавычками

// О__О


Спустя 1 минута, 29 секунд (5.04.2011 - 21:07) Invis1ble написал(а):
alex12060
да ведь бред это полный, цель этой функции какая, поясни?

Спустя 3 минуты, 41 секунда (5.04.2011 - 21:11) Игорь_Vasinsky написал(а):
научиться находить буквы на клавиатуре, не смотря на клавиатуру.

Спустя 3 минуты, 52 секунды (5.04.2011 - 21:15) alex12060 написал(а):
Invis1ble

Той, что у ТС - никакой.
У меня - обрезать слеши (если много), убить мускуловкой проверкой всякий бред.
Я ее использую при добавлении в БД, так как я лентяй))

При выводе - только htmlspecialchars()

А для проверки, как бы странно не звучало - md5()

И все.

Спустя 2 минуты, 21 секунда (5.04.2011 - 21:17) bastar написал(а):
Как понял моя функция полное гумно, но что в ней не то?

Спустя 5 минут, 17 секунд (5.04.2011 - 21:22) alex12060 написал(а):
Дам полное описание работы первой функции.
Ща.

Спустя 1 минута (5.04.2011 - 21:23) Invis1ble написал(а):
bastar
Цитата
моя функция полное гумно

отож
Цитата
что в ней не то?

ВСЁ
Тебе во втором посте twin дал ссылку, потрудился бы туда заглянуть и прочесть, а не спрашивать, что в твоей функции не так. После прочтения материала надеюсь ты сам себе ответишь на этот вопрос.

Спустя 1 минута, 33 секунды (5.04.2011 - 21:25) Invis1ble написал(а):
alex12060
Так я не понял, для чего ты используешь ф-цию Protect() ?

Спустя 7 минут, 34 секунды (5.04.2011 - 21:33) alex12060 написал(а):
Есть функция:


function Protect($string)
{
$string = trim($string);
$string = mysql_real_escape_string($string);
$string = htmlspecialchars($string);
$string = strip_tags($string);
$string = stripslashes($string);
$string = addslashes($string);

return $string;
}


Есть строка в базу:

Mike <true boy> 2'd


Разбираем строку твоей функцией:


$str = "Mike <true boy> 2'd";

$str = Protect($str);

// Mike <true boy> 2\'d

$string = trim($string); // Чистит лишние пробелы слева и справа (желательно иметь)
$string = mysql_real_escape_string($string); // Добавляет слеши к опасным строкам в мускул (нужно)
$string = htmlspecialchars($string); // Преобразует хтмл строки в сущности, безопасные для вывода
$string = strip_tags($string); // Удаляет хтмл теги (она здесь нахер не нужна, так как отработал хтмлспециалчарс)
$string = stripslashes($string); // Удаляет слеши перед кавычками
$string = addslashes($string); // Добавляет кавычки. Ну это парадокс уже...

// Этот ужас предстоит пройти твоей строке...


Спустя 47 секунд (5.04.2011 - 21:33) alex12060 написал(а):
Invis1ble

Цитата
Я ее использую при добавлении в БД, так как я лентяй))


Или я что-то не правильно делаю? huh.gif

Спустя 2 минуты, 5 секунд (5.04.2011 - 21:35) Invis1ble написал(а):
alex12060
Понимаешь, в чем дело.... Если ты обрабатываешь ф-цией Protect() данные перед записью в БД, то объем твоих данных увеличивается за счет обработки их htmlspecialchar'ом. Имхо, не нужно этого. Ипользование trim() тоже спорно...

Спустя 2 минуты, 18 секунд (5.04.2011 - 21:38) alex12060 написал(а):
Invis1ble

Цитата
Я урезал их до такого:



function Protect($string)
{
$string = trim($string);
$string = mysql_real_escape_string($string);

return $string;
}


Все, хватит офтопить))

ТС - понял ошибку?

Спустя 8 минут, 39 секунд (5.04.2011 - 21:46) twin написал(а):
trim зачем?

Спустя 1 минута, 48 секунд (5.04.2011 - 21:48) alex12060 написал(а):
twin

Цитата
У меня - обрезать слеши (если много), убить мускуловкой проверкой всякий бред.


Спустя 1 минута (5.04.2011 - 21:49) twin написал(а):
Этого не делает функция trim()

Спустя 2 минуты, 8 секунд (5.04.2011 - 21:51) alex12060 написал(а):
Почему же?

Эта функция возвращает строку str с удаленными из начала и конца строки пробелами.

http://php.su/functions/?f=trim&choice=info

Толкько я не сказал про символы табуляции, физ переноса строки и так далее.

Спустя 2 минуты, 8 секунд (5.04.2011 - 21:53) Invis1ble написал(а):
alex12060
Цитата
Эта функция возвращает строку str с удаленными из начала и конца строки пробелами.

и
Цитата
У меня - обрезать слеши

как-то не вяжется...

Спустя 1 минута, 37 секунд (5.04.2011 - 21:55) twin написал(а):
А для чего обрезать пробелы? А так же
Цитата
символы табуляции, физ переноса строки и так далее.
?

Спустя 8 минут, 35 секунд (5.04.2011 - 22:04) alex12060 написал(а):
Invis1ble

Пардон, я описался)
ПРосто, спать пора уже.

twin

Многие плохие люди есть такие, которые портят дизы своими вставками.

Я помню, зашел к себе, а там:


ers ?


Это не красиво. А вопере есть такая штучка, как подмена хтмл кода. Т.е можно редактировать код и нажать "применить" и он работает.

А вот такие комментарии в БД тоже не нужны:


\t\t\tsfas
\r\n
\r\n\r\n
\r\n
\t \t\t\t\t\aasdgag
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
...


Где \t - реальный таб
А \r\n - enter

Это делает один пост - километровым. Конечно, В БД значение TEXT обрежет по достижению лимита, но все-же, страница со скроллом размером в 1.5 см никому не нужна.

Для этого и использую.

Спустя 1 минута, 34 секунды (5.04.2011 - 22:05) Invis1ble написал(а):
alex12060
Цитата
Многие плохие люди есть такие, которые портят дизы своими вставками.

для этого лучше юзать trim() на выходе, имхо

Спустя 3 минуты, 4 секунды (5.04.2011 - 22:08) alex12060 написал(а):
Invis1ble

А БД засорять пробелами? По-моему их проще обрезать вначале, чем потом напрягаться выводом через нее...

Спустя 9 минут, 19 секунд (5.04.2011 - 22:18) twin написал(а):
Вот на форуме, на котором мы находимся, невозможно сделать абзац. Меня лично это очень напрягает. Я люблю текст оформлять красиво, это придает значимости и передает эмоции. А вот такие "заботливые" кодеры как ты лишили меня этой возможности.

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

Тут все просто - банальная паранойя. Слышал звон и не знаешь где он.

Спустя 5 минут, 29 секунд (5.04.2011 - 22:23) alex12060 написал(а):
Цитата
как ты


Не надо личностей.

Цитата
Написать кучу матов или иероглифов всяких.


Это совсем другая история. Ладно, тогда объясните мне, зачем эта функция вообще нужна, если ее используют параноики?

Хорошо, я согласен, что в форумах, посвященных кодингу, и подобным темам, где стиль текста решает все использовать trim() - абсурдно.

А в обработке логинов, определенной личной информации, где пара лишних пробелов выносит мозг - нет.

Спустя 3 минуты, 24 секунды (5.04.2011 - 22:26) twin написал(а):
Я сейчас говорю именно про твою чудо-функцию. Ты же сам написал, что
Цитата
Я ее использую при добавлении в БД, так как я лентяй))
Значит всегда, а не только для логинов.

Спустя 1 минута, 49 секунд (5.04.2011 - 22:28) alex12060 написал(а):
Ладно, не будем спорить больше.
Я подумаю о вышесказанном и сделаю определенные выводы.
Спасибо smile.gif

Спустя 2 минуты, 27 секунд (5.04.2011 - 22:31) bastar написал(а):
Так, из все обсуждений я понял что такой функции как

function($string)
{
$string = mysql_real_escape_string($string);
$string = htmlspecialchars($string);

return $string;
}

будет вполне достаточно, а для пароля и
 md5() 
хватит.
Или я все еще туплю?

Спустя 1 минута, 48 секунд (5.04.2011 - 22:33) twin написал(а):
htmlspecialchars зачем?

Спустя 28 секунд (5.04.2011 - 22:33) alex12060 написал(а):
bastar

htmlspecialchars рекомендуют обрабатывать данные при выводе. Поэтому, тебе можно использовать лишь mysql_real_escape_string()

Спустя 2 минуты, 18 секунд (5.04.2011 - 22:35) twin написал(а):
mysql_real_escape_string() зачем?

Спустя 3 минуты, 38 секунд (5.04.2011 - 22:39) alex12060 написал(а):
twin

Я верю, что этой функцией он предполагает заносение в БД безопасно.

Спустя 1 минута, 51 секунда (5.04.2011 - 22:41) twin написал(а):
Где у ТС написано, что данные он собрался заносить в БД?

Спустя 2 минуты, 6 секунд (5.04.2011 - 22:43) alex12060 написал(а):
twin

Это как минимум предполагается.
Тогда проверка воооообще ни к чему, как ни крути.

Спустя 8 секунд (5.04.2011 - 22:43) bastar написал(а):
Цитата (twin @ 5.04.2011 - 19:33)
htmlspecialchars зачем?

ну да логично получается, что mysql_real_escape_string будет достаточно для строки?
или же можно добавить strip_tags()?

Спустя 1 минута, 12 секунд (5.04.2011 - 22:44) bastar написал(а):
Если такая неразбериха, то данные заносятся в БД

Спустя 4 минуты, 14 секунд (5.04.2011 - 22:48) twin написал(а):
alex12060
Цитата
Это как минимум предполагается
Это очень плохое предположение. Ибо вопрос недвузначен:
Цитата
Защита данных которые вводит пользователель

А по сему вот это:
Цитата
Тогда проверка воооообще ни к чему, как ни крути.
более чем верное умозаключение.

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

bastar
Не ленись. Почитай статью по ссылке во втором топике.

Спустя 7 минут, 26 секунд (5.04.2011 - 22:56) VELIK505 написал(а):
Если на прямую качаешь базу используй mysql_real_escape_string и ничего не бойся.
А если писаешь что чёто в базу плохое залетит то я уже 3 года обрабатавыю:
function limpiarzashita($mensaje)
{
$mensaje = htmlentities(stripslashes(trim($mensaje)));
$mensaje = str_replace("'"," ",$mensaje);
$mensaje = str_replace(";"," ",$mensaje);
$mensaje = str_replace("$"," ",$mensaje);
$mensaje = str_replace(">","",$mensaje);
$mensaje = str_replace("<","",$mensaje);
$mensaje = str_replace("%","",$mensaje);
$mensaje = str_replace("=","",$mensaje);
return $mensaje;
}

и не разу не ломанули
htmlspecialchars тут впринципе не нужен он нужен когда ты инфу в браузер кидаешь

Спустя 4 минуты, 6 секунд (5.04.2011 - 23:00) twin написал(а):
Жуть. Все сначала. А лучше расстрелять, чтоб не мучался.

Спустя 59 минут, 34 секунды (6.04.2011 - 00:00) Trianon написал(а):
А вот мне интересно, что такое "защита данных" в понимании тредстартера...

От кого защита?
Кто на них посягает?

Спустя 8 минут, 33 секунды (6.04.2011 - 00:08) Дамир aka Super написал(а):
Это вообще для чего нужно?

Спустя 28 минут, 43 секунды (6.04.2011 - 00:37) Trianon написал(а):
alex12060
Цитата
Цитата
как ты

Не надо личностей.


Не надо передергивать. И вырывать два слова из контекста тоже не надо.

Полная цитата была следующей.
Цитата
А вот такие "заботливые" кодеры как ты лишили меня этой возможности.


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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.