Жалкая попытка, сказать про чушь... Когда сам ляпнул не подумав. What? У нас Location не в хедере то случаем передаётся? Эммм.... Я написал возможную его проблему, а дальше ему уже рыть. ЗАметь! Не я первый умничать начал. Я не спорю, что ты там умнее, к примеру. Но факт в том, что ты начинаешь разводить срачь. Ещё раз уточню ты хочешь всем своим выше сказанным сказать, что header отправляется позже чем все заголовки и то бишь после формирования документа и передачи его браузеру? Даже используя ob_start ? То есть логика работы с ob_start Сначала документ формируется на сервере, потом формируются заголовки. Но отправляются сначала заголовки? Или же документ? Ты сказал : А я сказал
Ну да, я маленько не правильно выразился, но не зачем было так наезжать,, можно было просто поправить! Ты всё таки модератор, а не быдло из подворотни. Я просто с работы и уставший и во втором сообщение я подкорректировал свои мысли. И выразился чётко по ману. Ща ещё под корректирую, последнею цитату, там со всеми заголовками хедер сначала отправится, а потом уже сформировавшийся html документ. Поправь меня, если я ошибаюсь! И обьясни в каком месте написана чушь с умным видом.
Эту истину я в принципе познал... но как выяснилось бывают нюансы... У меня скоро разовьётся фобия на хедер (боязнь столкновения с хедером и всяческое его избегание)..
Это как раз касается тебя. И твоего неумения принимать что-то сказанное другими. Поправляю. Когда сервер отправляет запрос клиенту, он не делает этого не в реальном времени а-ля push-уведомление по вебсокету. Попробуй дернуть браузером такой код: PHP: <?php echo 0; sleep(10); echo (1); И сделай аудит запроса. Увидишь что-то вроде: Тут явно написано, что загрузка ответа сервера заняла 2мс, в то время как ожидание загрузки заняло 10 секунд. При этом, при выполнении в консоли у тебя 0 и 1 должны появиться по очереди, а не разом. Связано с тем, что сформированный ответ сервера отправляется только после того, как пых подтвердит, что он закончил работу. Связано с тем, что у самого сервера есть свой буфер вывода, который работает как накопитель для PHP. Таким образом, когда ты пишешь header, он на самом деле никуда не отправляется, он кладется в точно такой же буфер вывода. С той лишь разницей, что буферу вывода сервера не важно, в каком порядке что в него пришло - его задача принять набор данных и отдать клиенту. А буферу вывода PHP не все равно. И если он был задействован, он собирает в себя все данные, кроме заголовков, которые прокидывает сразу в буфер вывода на уровне сервера. И гарантирует, что остальной контент будет отдан после. Буфер вывода PHP даже не обязательно руками закрывать. Он автоматом сбрасывается в буфер сервера, по окончании работы скрипта. Таким образом то, что я сказал, означает следующее: если в самом начале кода написать ob_start(); , можно будет раз и навсегда забыть о проблемах с очередностью отправки контента и заголовков. Я написал это и только это. Теперь ясно, что я имел ввиду? Или снова будешь говорить, что я грешу против HTTP-протокола?
Чем плох md5 и чем хорош password_hash я вообщем то не понял? --- Добавлено --- Наверное я бы предпочел познать что то простое , а затем постепено нагружатся знанияеми, видя что даже у знающих людей единого мнения по некоторым ворпосам нет.
Да ладно. Всё же понятно тебе объяснили. Либо следи, чтоб header был до любого вывода, либо ставь ob_start() в начале скрипта. Лично у меня в скриптах не может быть вывода, пока всё не просчитается, так что при нормальной работе просто не бывает вывода до header, header я вызываю на этапе рассчётов, если header("Location"), то после него обязательно die ставлю, поэтому я не забочусь об ob_start(). md5 плох тем, что все о нём знают, существуют радужные таблицы для самых распространённых паролей, короче, подобрать по хешу md5 пароль не так уж и сложно. password_hash - там алгоритмы похитрее, он сам заботится о соли, короче, его крутые ребята из Зенда придумали так, чтоб пароль был максимально взломостойкий.
Первое правило - не пугайся того, что непонятно. Само оно понятным не станет. Просто возьми и почитай про это. И попробуй применить. И все встанет на свои места. --- Добавлено --- Не совсем так, алгоритмы там никакие не выдуманы новые, он использует те, что есть в системе, более того, позволяет тебе самому указать, каким алгоритмом надо хэшить строку. Ценность этой функции в другом - она позволяет любому дебилу организовать правильное хранение паролей, не заставляя пользователей расплачиваться приватными данными за деилизм разработчика, не умеющего в соль. Это и хорошо и плохо. Хорошо потому, что является удобным инструментом. Плохо потому, что является ответом на бедственное положение в плане пониманий основ безопасности среди когорт PHP-адептов, черпающих мудрость с ютубов, с одной стороны избавляя мир от проблемы, связанной с их квалификацией, а с другой - позволяя этой квалификации падать еще ниже.
Ну я предполагаю, что он и соль не просто так прилипляет перед хешем, иначе бы тоже взломать можно было, он ведь соль в пароле хранит
Это тоже часть реализации "любой дурак осилит". По-старинке же соль хранили рядышком с хэшем пароля, в соседнем столбце. Это слишком сложно. Это две переменные надо использовать. А теперь хватит одной - соль подклеивается к хэшу пароля, содержит в себе идентификатор алгоритма, которым надо проверять его, и ее длина также известна. Вуаля - одна строка в базе вместо двух. И это тоже с одной стороны удобно, а с другой грустно, потому что сделано было от безысходности. В общем, я не говорю, что я против этого, не. Я говорю, что это не супер-алгоритм, это просто автоматизация "бест-практис" решения в плане обеспечения безопасности паролей, которое позволит даже низкоквалифицированному разрабу не слить мой пароль налево. Потому что в противном случае он бы в лучшем случае вообещ ничего не солил, в худшем даже ничего бы не хэшировал, храня пароли как есть, либо, в терминальном случае - хранил бы пароль в куках. Такое до сих пор встречается, увы.
md5 не служит для шифрование пароля, нет, не нужно его использовать. Сейчас востребовано использовать Password Hashing Функции Ранее нужно было использовать crypt и chr.
@rodent90 А ты вкурсе, что в давних временах. " когда по земле ходили динозавры", в былых 2000 - ых юзали двойное шифрование md5. И за не имением других возможностей md5 служил для шифрования паролей (Плюс соль), просто (На сегодняшний день) метод мягко говоря устарел или даже ушёл в историю. --- Добавлено --- Спросишь, - откуда я знаю? Просто люблю читать. - Отвечу я тебе.
Двойное хэширование, оно просто не безопасно, с солью тоже правильно использовать, как минимум дописывать в конец данных.
@mkramer вот где как пишут, где то это хэширование, кто-то ляпнет, что это шифрование, а ещё вычитал на стеке что это не обратимое шифрование. Хотя сейчас вроде как нашёл функции самописные для расшифровки... @denis01 да ща нафиг этого не нужно, когда есть password hash http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=13052
@denis01 я не говорил, что я его использую, я лишь сказал, что его когда-то очень, при очень давно юзали. Я знаю, что md5 ломается на раз
@denis01 у меня вообще, система авторизации такая, когда проходишь авторизацию сравнивается пароль password verify, ещё и в сессию password hash записывается и в бд соответствующему пользователю, а при каждом обновлении страницы сравнивается password verefi и эта сессия. После выхода соответственно рушу сессию, и удаляю значение из бд. А на восстановление пароля выдаю хешированную ссылку... Которая отправляется на мыло. --- Добавлено --- Осталось только про TLS почитать и уменьшить время жизни пакетов. И вообще почитать ещё про защиту потому, что мне кажется что всё это фигня, умные люди ловят пакеты и их смотрят в двоичный код, и из всего этого гэ находят полезную информацию типа логинов с паролем для входа в систему... Ну или ещё что-нибудь, что там можно поймать. Хотя я в этой теме про пакеты плаваю и толком не фига не знаю, ещё не углублялся, но когда нибудь дойду.
зачем ссылки хэшировать ? --- Добавлено --- У тебя вся система жесть. Но я не хочу разводить спор об этом, поэтому молча постою в сторонке ))
Там не расшифровка, там подбор по словарю. Про радужные таблицы я писал - это набор с md5-кодами самых распрострённных паролей, аля qwerty. Если в словаре не будет - не сработает, просто словари сейчас большие имеются. Необратимое шифрование - да, встречал, но по определению, шифрование - это обратимый процесс