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 смотрел на ютьюбе?
Там автор использует такие-же функции...
Я урезал их до такого:
Ты случайно не 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()
И все.
Той, что у ТС - никакой.
У меня - обрезать слеши (если много), убить мускуловкой проверкой всякий бред.
Я ее использую при добавлении в БД, так как я лентяй))
При выводе - только 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() ?
Так я не понял, для чего ты используешь ф-цию 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
Цитата |
Я ее использую при добавлении в БД, так как я лентяй)) |
Или я что-то не правильно делаю?
Спустя 2 минуты, 5 секунд (5.04.2011 - 21:35) Invis1ble написал(а):
alex12060
Понимаешь, в чем дело.... Если ты обрабатываешь ф-цией Protect() данные перед записью в БД, то объем твоих данных увеличивается за счет обработки их htmlspecialchar'ом. Имхо, не нужно этого. Ипользование trim() тоже спорно...
Понимаешь, в чем дело.... Если ты обрабатываешь ф-цией 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
Толкько я не сказал про символы табуляции, физ переноса строки и так далее.
Эта функция возвращает строку 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
Многие плохие люди есть такие, которые портят дизы своими вставками.
Я помню, зашел к себе, а там:
Это не красиво. А вопере есть такая штучка, как подмена хтмл кода. Т.е можно редактировать код и нажать "применить" и он работает.
А вот такие комментарии в БД тоже не нужны:
Где \t - реальный таб
А \r\n - enter
Это делает один пост - километровым. Конечно, В БД значение TEXT обрежет по достижению лимита, но все-же, страница со скроллом размером в 1.5 см никому не нужна.
Для этого и использую.
Пардон, я описался)
ПРосто, спать пора уже.
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 написал(а):
Ладно, не будем спорить больше.
Я подумаю о вышесказанном и сделаю определенные выводы.
Спасибо
Я подумаю о вышесказанном и сделаю определенные выводы.
Спасибо
Спустя 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()
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
Не ленись. Почитай статью по ссылке во втором топике.
Только это не проверка, а именно обработка. Обрабатывать данные нужно не там, где они вводятся, а там, где они применяются. Так как для разных целей - разные способы обработки. Попробуй вернуть в форму данные, обработанные этой функцией. В которых есть апостроф к примеру. И получишь искажение как минимум, XSS как бонус.
bastar
Не ленись. Почитай статью по ссылке во втором топике.
Спустя 7 минут, 26 секунд (5.04.2011 - 22:56) VELIK505 написал(а):
Если на прямую качаешь базу используй mysql_real_escape_string и ничего не бойся.
А если писаешь что чёто в базу плохое залетит то я уже 3 года обрабатавыю:
и не разу не ломанули
htmlspecialchars тут впринципе не нужен он нужен когда ты инфу в браузер кидаешь
А если писаешь что чёто в базу плохое залетит то я уже 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
Цитата | ||
Не надо личностей. |
Не надо передергивать. И вырывать два слова из контекста тоже не надо.
Полная цитата была следующей.
Цитата |
А вот такие "заботливые" кодеры как ты лишили меня этой возможности. |
Николай критикует не Вас лично, а подход, который Вы защищаете.
Подход этот порочен независимо от того, кто ему следует, Вы ли, разработчики движка форума, или автор вопроса, решивший взять пример.