За последние 24 часа нас посетили 30732 программиста и 1463 робота. Сейчас ищут 789 программистов ...

Правильно я сделал регистрацию+авторизацию на сайте?

Тема в разделе "PHP для новичков", создана пользователем Priler, 15 мар 2013.

Статус темы:
Закрыта.
  1. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Здравствуйте.
    Я сделал на сайте вот такую регистрацию+авторизацию http://htmlweb.ru/php/example/avtorizacija2.php
    Вопрос: безопасен ли такой метод???
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вот сразу обиделся за строки:
    Код (Text):
    1. # Убераем лишние пробелы и делаем двойное шифрование
    2. $password = md5(md5(trim($_POST['password'])));
    если я ввел 123пробелпробел то оно запишется как 123 и тогда еще и 123пробел будет работать. простой пример как из моего одного (пусть и не надежного) пароля система сделала еще менее надежный с большим кол-вом вариантов, на которые он будет срабатывать как валидный. оставьте мне то что я ввел. если я забыл и ввел 123пробел - скажите что пароль неверный и я буду сидеть вспоминать сколько пробелов я ткнул в конце.

    остальное не читал - уж больно по глазам дизайн бьет.
     
  3. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Как может совпасть 123пробелпробел с 123 ? Это же разные вещи

    Добавлено спустя 1 минуту 23 секунды:
    Ganzal я делаю как там заношу командой mysql_query("INSERT INTO users SET user_login='".$login."', user_password='".$password."'"); но почему-то в базу вместо логина заносится цифра 0, подскажи почему так происходит

    Добавлено спустя 1 минуту 33 секунды:
    И на денвере когда делаю так header("Location: login.php"); Он говорит так: Cannot modify header information - headers already sent by (output started at Z:\home\site.net\www\register.php:1) in Z:\home\site.net\www\register.php on line 107
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а легко. функция трим без аргументов - обрезает слева и справа пробельные символы - переводы строк, табуляцию, пробелы. таким образом 123пробелпробел после трима будет 123, как и 123пробел... они все будут приведены к 123. три пароля будут работать идентично...
     
  5. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Не не стой, ты путаешь. Тут речь о регистрации, если при авторизации trim не юзать то все найс будет
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да ты что ты? то есть сохранил ты фактически мой 123 а потом я пришел 123пробелпробел и не вошел. почему? Я ЖЕ ПРАВИЛЬНЫЙ ПАРОЛЬ ВВОЖУ!!!
     
  7. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Ну тогда не допускать пробелы в пароле
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это почему это? пароль это любая последовательность, которую может запомнить пользователь, а не вы желаете сохранить)))
     
  9. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Как почему, например я не желаю видеть на своем сайте пароли меньше 5 и больше 30 символов, в которых присутствуют пробелы и/или буквы русского алфавита. :)
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    кстати, еще один вопрос по использованию хешей. уж больно часто с таким сталкиваюсь. ну дает мд5 32 символа. но они 16-ричные. не проще сохранить 16 байт? в два раза меньше места на одном только хеше пароля. 16 байт экономии. а у вас там еще и юзер_хэш есть. еще 16 байт можно сэкономить. итого 32 на одной только строке...
     
  11. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    А как это сохранить 16 байт?
    Мд5 вроде четкая вещь, месяца порой уходят что бы сломать md5 хеш
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    тебе какая разница какой у пользователя пароль? больше 30? ну ты ж хэшируешь пароль, тебе срать должно быть на максимальную длину. ну в рамках разумного можно ограничить 512 символами. но это скорее чтоб трафик экономить. меньше 5? ну есть случаи когда человек может запомнить только 4 символа. поэтому пинкоды на кредитках 4 цифры. пароль остается на совести пользователя. наша задача его надежно сохранить и злоумышленнику не передать.
     
  13. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Ну ладно ладно тогда не меньше 3х и не больше 512 + без пробелов + без русских символов
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вопрос не в стойкости а в разумности использования 32 байт или 16
    например FF - два байта хекс, или один байт 255 в бинарном режиме. суть не меняется - хочешь упаковал 32 хекс в 16 бин, хочешь распаковал 16 бин в 32 хекс - сам хэш от этого не поменялся. поменялось представление его хранения. чтоб включить бинарный режим (возврат 16 байт а не 32 хекс-о-байт) достаточно добавить аргумент true вторым при вызове md5. ман в помощь.
     
  15. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Я это применю мне бы скрипт запустить ошибки возникли:
    делаю как там заношу командой mysql_query("INSERT INTO users SET user_login='".$login."', user_password='".$password."'"); но почему-то в базу вместо логина заносится цифра 0, подскажи почему так происходит

    И на денвере когда делаю так header("Location: login.php"); Он говорит так: Cannot modify header information - headers already sent by (output started at Z:\home\site.net\www\register.php:1) in Z:\home\site.net\www\register.php on line 107
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну в регистр первая линия уже выводит данные следовательно заголовки форсированно отправлены. в 107 линии ты пытаешься отправить заголовок что вызывает логичную ошибку. такое (слив каких-то символов) часто происходит когда юникод с меткой порядка байт идет, или пустая строка перед открывающимся пхп-тегом и так далее. гуглится и решается за пару минут. самое важное пых тебе дал - output started at Z:\home\site.net\www\register.php:1 отсюда и начинаем расследование.

    откуда вместо логина ноль я не знаю, прочтение в начале второго ночи косяков не выявило. но рекомендую и логин тоже экранировать. а то дыра в безопасности выходит =)
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Похоже, что поле user_login в б.д. имеет числовой тип. А нужен строковый.
    Эта ошибка обсуждалась уже сотни раз. И здесь и, наверно, на любом форуме по php, какие только существуют. Набери в яндексе или гугле "Cannot modify header information - headers already sent by"
     
  18. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    короче, мой вердикт - скрипт фигня полная. по крайней мере у меня к нему претензии не только как у программиста, но и как у бытового пользователя. не дай боже столкнуться с сайтом, на котором он работает ;)

    Добавлено спустя 1 минуту 58 секунд:
    неужели можно было невнимательно скопировать определение таблицы?))) ох уж эти пэмэа-юзеры... всех бы сначала за консоль и блокнот сажать, а потом уже разрешать пользоваться гуями всякими, визивигами и идэешками....
     
  19. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Ganzal а какой посоветуешь тогда?

    Добавлено спустя 1 минуту 59 секунд:
    sobachnik да уж моя не внимательность даже меня сейчас удивила.
    Спасибо за помощь!

    Ganzal, за консолью я работал и не раз :) В процессе написания кода на Python приходится часто юзать консоль.
     
  20. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    offtop:
    Код (PHP):
    1. if(0=='string') {
    2. }
    Как?? Оо Они же не должны быть равны, как же так...
    Ну ёмаё все пошел вешаться =)))

    На хер тут 2-ое хеширование?)

    Код (PHP):
    1. if(!@$_POST['not_attach_ip']){ 
    Супер проверка =)
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  22. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Тогда посоветуйте нормальный скрипт регистрации
     
  23. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    возьми любой многотиражный движок CMS, или форума и посмотри там.

    КО
     
  24. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Смотрел у Word Press, там черт ногу сломит
     
  25. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    это да. но люди пользуются и даже зарабатывают на этом.

    Добавлено спустя 7 минут 3 секунды:
    по крайней мере там давно истребили самые очевидные ошибки.
     
Статус темы:
Закрыта.