Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Авторизация, вопрос относительно безопасности 
:(
    Опции темы
Ипатьев
Дата 16.9.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



только 
Код

или = '$_POST[name]' AND
или = '".$_POST['name']."' AND

иначе ошибки будут.

ну, и перед этим не забыть
Код

$_POST['name']=mysql_real_escape_string($_POST['name']);

а то многие забывают.

PM MAIL   Вверх
MoLeX
Дата 16.9.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Ипатьев @  16.9.2009,  16:28 Найти цитируемый пост)
иначе ошибки будут.

в новой Опере подсветка не работает


Цитата(Ипатьев @  16.9.2009,  16:28 Найти цитируемый пост)
а то многие забывают.

это само собой


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
nerezus
Дата 16.9.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

$query = "SELECT * FROM `User` WHERE `name` = '".$_POST[name]." AND `pass` = '".md5($_POST['pass'])."' LIMIT 1';
 Может не надо показывать новичкам такой пример ###кода? Они могут подумать, что это нормально.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MoLeX
Дата 17.9.2009, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



nerezus,покажи свой пример не 
Цитата(nerezus @  16.9.2009,  22:47 Найти цитируемый пост)
###кода




--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
NewDima
Дата 17.9.2009, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



MoLeX, не, ну хотя бы следование элементарным правилам безопасности (mysql_real_escape_string)
PM ICQ   Вверх
Gold Dragon
Дата 17.9.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



я конечно предполагаю что в логине могут использоваться любые символы, но думаю что лучше сразу предложить пользователю отказаться от "всяких кавычек", букв и цифр для имени достаточно даже в латинском алфавите smile

Просто я не совсем сторонник использования mysql_real_escape_string и уж тем более "WHERE `name` = '".$_POST[name]." ". Любые "пришлые" переменные нужно пропускать через фильтр, а не вставлять их прямо в запрос

зы
и всё же $_POST['name'] а не $_POST[name]


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 17.9.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Gold Dragon @  17.9.2009,  09:00 Найти цитируемый пост)
Просто я не совсем сторонник использования mysql_real_escape_string и уж тем более "WHERE `name` = '".$_POST[name]." ". Любые "пришлые" переменные нужно пропускать через фильтр, а не вставлять их прямо в запрос

это никак не связанные между собой вещи.
фильтр - опционально. зависит от того, "пришлые данные" или "ушлые".
mysql_real_escape_string или подстановки - обязательно. без исключений.

я думаю, что nerezus, как раз имел в виду подстановки. 
поскольку при их использовании просто не возникает странных идей типа "я не сторонник корректного составления SQL запросов". мнения программиста никто не спрашивает, система молча занимается всем этим сама. В этом смысле подстановки гораздо безопаснее для начинающих программистов.



PM MAIL   Вверх
MoLeX
Дата 17.9.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Gold Dragon @  17.9.2009,  09:00 Найти цитируемый пост)
зы
и всё же $_POST['name'] а не $_POST[name] 

Цитата(MoLeX @  16.9.2009,  16:57 Найти цитируемый пост)
в новой Опере подсветка не работает

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



Цитата(NewDima @  17.9.2009,  06:24 Найти цитируемый пост)
MoLeX, не, ну хотя бы следование элементарным правилам безопасности (mysql_real_escape_string) 

Цитата(Ипатьев @  16.9.2009,  16:28 Найти цитируемый пост)
ну, и перед этим не забыть
Код

$_POST['name']=mysql_real_escape_string($_POST['name']);

а то многие забывают.

Цитата(MoLeX @  16.9.2009,  16:57 Найти цитируемый пост)
это само собой 




--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 17.9.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



вот именно, начинающий программист должен заботится о безопасности "приходящих" данных, а не полагаться только на простое экранирование. Всё что приходит из $_REQUEST как минимум должно иметь вид
Код

$name = (isset($_POST['name'])) ? fFiltr($_POST['name']) : '';
// ----------------------
function fFiltr($str=''){
  // здесь приводим всё в порядок, например так
  $result = preg_replace('#[^a-zа-яё0-9,:(); +.-]#ui','', strip_tags(trim($str)));
  return $result;
}

что касается самого вопроса, то однозначно в базе хранится не пароль а хотя бы md5(пароль).. в принципе этого достаточно. А как только пришли данные $_POST['password'], то их сразу переделываем в $password = md5($_POST['password']). Меня иногда поражают сайты где при восстановлении пароля они мне присылают мой пароль в открытом виде smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 17.9.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Gold Dragon @  17.9.2009,  09:33 Найти цитируемый пост)
Всё что приходит из $_REQUEST как минимум должно иметь вид

мне всегда странно 
читать такие советы
на форуме
ведь если бы форум им следовал
то такой совет 
невозможно было бы написать

PM MAIL   Вверх
MoLeX
Дата 17.9.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Ипатьев, форум и средне статистический сайт - это не одно и тоже. Так что сравнивать их не следует


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 17.9.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



тогда напишу, чтобы Ипатьев понял
$_REQUEST - это ассоциативный массив, состоящий из содержимого $_GET, $_POST, $_COOKIE и $_FILES, т.е. то что приходит (может приходить) от пользователя... Указав $_REQUEST я тем самым расширил $_POST, или чтобы совсем понятно было, то указал не "яблоко", а "фрукты"

Это сообщение отредактировал(а) Gold Dragon - 17.9.2009, 09:52


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
bars80080
Дата 17.9.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



таки соглашусь с Ипатьев, подвергать стандартному форматированию все входящие данные - это сродни трижды перекрестится и плюнуть через плечо, чтобы защита крепче стала

всему своё время, а данные могут быть разные. надо просто понимать, что ты получаешь и как это обработать
PM MAIL WWW   Вверх
Gold Dragon
Дата 17.9.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



согласен, что входящие данные не обязательно так усердно проверять, но привыкать к этому нужно и необходимо.. Всё конечно зависть от целей и задач самого проекта. Хотя с другой стороны, я давно написал класс, который имеет набор часто используемых фильтров, например, таких как, мыло, сайт, телефон, имя, только цифры, только буквы. Он маленький и подцепив его в любой проект, я забываю про всякое экранирование smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 17.9.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Рекомендую автору топика не повторять ошибку Gold Dragon, который, даже после всех объяснений все равно не понял, что фитьтрация данных и составление SQL запросов - совершенно разные, никак не связанные между собой вещи.
И привязывать одно к другому - это в конечном итоге нанести вред безопасности сайта.
Тем более, что фраза про "забываю про всякое экранирование" - не более чем фантазия, и в реальности забыть не получится. Что я проиллюстрировал примером выше.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0863 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.