Помощник
|
Регистрация на сайте |
ZhukV
|
Сообщение
#1
|
||
|
|
||
|
|||
Mulder_hb |
21.6.2010, 21:21;
Ответить: Mulder_hb
Сообщение
#2
|
|
include*"register.core.php"; Не учите людей дурному. Минимум include_once. В идеале require_once. <!-- Поле, по котрому будем проверять, есть ли авторизация, тоесть, была ли нажата кнопка Go!!! --> <input type="hidden" name="register" value="1" /> Никогда не понимал сакральный смысл применения в подобных случаях скрытого текстового поля. Почему сразу нельзя проверять существования элемента массива с именем кнопки? По классу. Для записи лога лучше применять буферизацию. А если это еще и полноценный сайт, где множество компонентов требуют логирования, то вынести все операции по логированию в отдельный класс. Логин и пароль проходит только md5-хеширование перед установкой в куку? ИМХО, куда безопаснее использовать открытые криптографические алгоритмы с доступом по ключу. |
|
|
ZhukV
|
Сообщение
#3
|
|
А если это еще и полноценный сайт, где множество компонентов требуют логирования, то вынести все операции по логированию в отдельный класс. Спора нет. У меня так и есть. Но все же.... Много, кто здесь присутвует на форуме не смотрят в сторону ошибок уровня PHP, тем более собственных. В результате, если делаеш для общего понимания (чтоб каждый мог использовать), ПРИХОДИТСЯ делать систему встроеного лога. ИМХО, куда безопаснее использовать открытые криптографические алгоритмы с доступом по ключу. А ты постав значение: [PHP] public $MD_COUNT = 1; [/PHP] Цыкл кеша порйдет один раз. [PHP]public $MD_COUNT = 5;[/PHP] Имхо, и логин, и пароль закешируется в цыкле пять раз, да потом еще сцеплены вместе тоже закешируются в том же цыкле. Скажи тогда плз, какая вероятность того, что хакер зможет взломать даже вот такие даные: LOGIN - ZhukVit PASS - ZhukVit //А вот и что получилось de6ab6ab6db8e66133636e4ea1276695 Ах, да, еще й забыл. По дефоулту имя переменной куков есть: bf1c525e27aadc802e81669a529af7f9{$ID}, где $ID - уникальный номер пользователя. Установи: [PHP] $this -> MD_LOGIN = $_SERVER['REMOTE_ADDR']; [/PHP] Не пытался? Тогда чего бредиш? Уникально, на каждом компе будет по разному называтся куки. Я вообще не могу понять, прочитал пост и сразу пишеш? Что ты можеш писать, если не смотрел код? А вот откуда я это взял: Если бы читал код заметил бы сразу, что в классе имеется собственная функция кодировки: $this -> MD5([string]) [PHP] /*-------------------------------------------------- Функция кеширования заданого значения --------------------------------------------------*/ private function MD5($t = ''){ if($t === true){ $t = $this -> MD_LOGIN; } for($i = 0; $i < $this -> MD_COUNT; $i++){ $t = md5($t); } return $t; } [/PHP] Раз такой умный, типа те не нравится мой метод шифрование, пожалуйста, изменяй все как те угодно. Все будет работать без порблем при изминение даной функции, вот только первую строчку не забудь оставить, потому что будет лажа... Никогда не понимал сакральный смысл применения в подобных случаях скрытого текстового поля. Почему сразу нельзя проверять существования элемента массива с именем кнопки? Позоду ты его й тогда никогда не поймеш... Часто бывало, когда нужно передать из одной страницы инфу на другую страницу, тем более зашифрованые даные пользователя (возможно его хеш), что ты тогда будеш делать? А как ты себе представляеш удаленную загрузку на JavaScript? Куки? А если отключены. |
|
|
Mulder_hb |
22.6.2010, 21:38;
Ответить: Mulder_hb
Сообщение
#4
|
|
Спора нет. У меня так и есть. Но все же.... Много, кто здесь присутвует на форуме не смотрят в сторону ошибок уровня PHP, тем более собственных. В результате, если делаеш для общего понимания (чтоб каждый мог использовать), ПРИХОДИТСЯ делать систему встроеного лога. Как связаны между собой "не смотрят в сторону ошибок уровня PHP, тем более собственных" и встроенная система логирования? Ну ладно, не буду придираться. Если это учебный класс, то пойдет и так. Имхо, и логин, и пароль закешируется в цыкле пять раз, да потом еще сцеплены вместе тоже закешируются в том же цыкле. О боже, операция md5-хеширования в цикле??? Кто-то давеча меня пытался обучить скорости выполнения и производительности скриптов... Скажи тогда плз, какая вероятность того, что хакер зможет взломать даже вот такие даные: Вы меня не так поняли. Наверное, я не так выразился. Зачем хакеру взламывать ваш пароль? Как известно, зная md5-хеш, почти невозможно восстановить входное сообщение. Т.е. вы получив от пользователя в куках хеш не производите его декодирования, а подставляете его на прямую. Это фактически тоже самое, что напрямую передавать пароль. Что мешает хакеру просто перехватить куку и подставить в своем запросе тот же хеш? Ничего. Хакеру не нужно взламывать хеш, ему нужно просто его перехватить. Я же предлагаю ваш хеш перед передачей в куку еще и закриптовать, а когда пользователь возвращает вам свою куку, вы просто его декодируете обратно и только потом сверяете эти хеши. У вас сейчас нет никакой защиты куков. Ах, да, еще й забыл. По дефоулту имя переменной куков есть: bf1c525e27aadc802e81669a529af7f9{$ID}, где $ID - уникальный номер пользователя. А зачем мне знать имя переменной? У вас кука устанавливается в корень. Мне достаточно знать имя сайта, чтобы украсть нужные куки. Раз такой умный, типа те не нравится мой метод шифрование У вас нет никакого метода шифрования. Вы передаете данные в открытую. пожалуйста, изменяй все как те угодно Спасибо, конечно, но я пишу собственные скрипты с шифрованием. Позоду ты его й тогда никогда не поймеш... Часто бывало, когда нужно передать из одной страницы инфу на другую страницу, тем более зашифрованые даные пользователя (возможно его хеш), что ты тогда будеш делать? А как ты себе представляеш удаленную загрузку на JavaScript? Куки? А если отключены. Вы меня снова не поняли. Я задал конкретный вопрос, какой сакральный смысл существования скрытого поля конкретно в вашем случае. Разберем ваш случай. Есть форма, в которой визуально присутствуют только три элемента: текстовое поле для ввода логина, текстовое поле для ввода пароля и кнопка ввода. Объясните мне, зачем вы КОНКРЕТНО в этом случае еще создаете дополнительное скрытое поле? Чтобы удостоверится была ли нажата кнопка? Ну так и проверяйте существование элемента кнопки, а не существование скрытого элемента. [php] <form action="" method="post"> <input type="text" name="login" /><br /> <input type="password" name="password" /><br /> <label><input type="checkbox" name="memory" value="1">Запомнить</label><br /> <input type="submit" name="Go" value="Go!!!" /> <?php if (isset($_REQUEST['Go'])) { echo "Кнопка нажата! И зачем конкретно в этом случае поле hidden?" } ?> [/php] Что ты можеш писать, если не смотрел код? Если бы я не смотрел код, я бы не задавал подобных вопросов. Как вы думаете? |
|
|
MetSerp |
23.6.2010, 0:19;
Ответить: MetSerp
Сообщение
#5
|
|
ZhukV, не взрывайтесь, критика вполне конструктивная. Не стоит на замечания отвечать в стиле гопника "ты чо умный шоле?!" лучше анализировать и если реально в чем то не уверен то все же пересмотреть свои взгляды немного, это помогает развиваться дальше.
|
|
|
ottaviano |
23.6.2010, 1:16;
Ответить: ottaviano
Сообщение
#6
|
|
ZhukV, не взрывайтесь, критика вполне конструктивная. Не стоит на замечания отвечать в стиле гопника "ты чо умный шоле?!" лучше анализировать и если реально в чем то не уверен то все же пересмотреть свои взгляды немного, это помогает развиваться дальше. а мне нравится читать их диалоги ))) узнаю много нового )))) |
|
|
ZhukV
|
Сообщение
#7
|
|
Я же предлагаю ваш хеш перед передачей в куку еще и закриптовать, а когда пользователь возвращает вам свою куку, вы просто его декодируете обратно и только потом сверяете эти хеши. У вас сейчас нет никакой защиты куков. Я не считаю это нужным. Как Вы сказали, нужно просто перехватить куки и все. В результате, если они даже по сто раз хешируются (кодируются), то нет никакого результата. Перехватив кук, все станет просто. Как раз, у меня ддля этого и предвидена переменная MD_LOGIN, которая и устанавливает названия куков. Если ее закодировать, к примеру по браузеру, IP, и дате собственным алгоритмом кодирования. В результате, перехватите Вы куки, или нет, все равно в чужей акаунт не влезете! :) Вы меня снова не поняли. Я задал конкретный вопрос, какой сакральный смысл существования скрытого поля конкретно в вашем случае. Разберем ваш случай. Есть форма, в которой визуально присутствуют только три элемента: текстовое поле для ввода логина, текстовое поле для ввода пароля и кнопка ввода. Объясните мне, зачем вы КОНКРЕТНО в этом случае еще создаете дополнительное скрытое поле? Чтобы удостоверится была ли нажата кнопка? Ну так и проверяйте существование элемента кнопки, а не существование скрытого элемента. Да, возможно и такое, и это вполне также верно. У меня на сайтах, немного другая история: На одну страницу есть несколько оброботчиков на формы. Формы динамические, тоесть могут изменятся как угодно, при этом должен и изменится обробочтик. Вот я и скрытым полем контролирую оброботчик. Также есть, когда несколько форм на странице. Оброботчик один. Я по этому и скрытому полю как раз и указываю, какую форму обрабатывать. Как связаны между собой "не смотрят в сторону ошибок уровня PHP, тем более собственных" и встроенная система логирования? Ну ладно, не буду придираться. Если это учебный класс, то пойдет и так. Ну а если помотреть на эту сторону, как новичек? Я к примеру никогда не смотрел, какие ошибки могут возникнуть. В результате, пришел с утра на работу, открыл системный лог ПХП, и там +100 записей. Круто было. После этого и пришло в голову контролировать даже собственные ошибки. ZhukV, не взрывайтесь, критика вполне конструктивная. Не стоит на замечания отвечать в стиле гопника "ты чо умный шоле?!" лучше анализировать и если реально в чем то не уверен то все же пересмотреть свои взгляды немного, это помогает развиваться дальше. СПС ОГРОМНОЕ. Будем принимать это к вниманию. |
|
|
Mulder_hb |
23.6.2010, 21:39;
Ответить: Mulder_hb
Сообщение
#8
|
|
Я не считаю это нужным. Как Вы сказали, нужно просто перехватить куки и все. В результате, если они даже по сто раз хешируются (кодируются), то нет никакого результата. Я вижу, вы не имеете никакого представления о криптографических алгоритмах. Если вы перехватите куку, которая была предварительно закриптована, вы ничего с ней не сделаете, так как вы не знаете ключа, который применялся при кодировании. А расшифровать вы будите обязаны, т.к. скриптом принимается не криптографический хеш, а md5-сумма. Еще раз ваш алгоритм: 1. Составляем md5-хеш пароля. 2. Передаем этот md5-хеш в куку. 3. При повторном входе пользователя забираем эту куку и НАПРЯМУЮ сравниваем ее с md5-суммой в базе. В результате на сайте дыра. Достаточно перехватить куку и НАПРЯМУЮ передать ее скрипту. Алгоритм с шифрованием: 1. Составляем md5-хеш пароля. 2. Кодируем его при помощи секретного ключа. 3. Передаем полученный шифр в куку. 4. При повторном входе пользователя снимаем куку, расшифровываем ее при помощи того же ключа. Полученный md5-хеш сравниваем с хешем в базе. В результате если хакер перехватит куку, он не сможет НАПРЯМУЮ передать ее скрипту, просто потому, что он не сможет расшифровать ее - он не знает секретного ключа. Как раз, у меня ддля этого и предвидена переменная MD_LOGIN, которая и устанавливает названия куков. Если ее закодировать, к примеру по браузеру, IP, и дате собственным алгоритмом кодирования. В результате, перехватите Вы куки, или нет, все равно в чужей акаунт не влезете! Т.е. вы готовы хранить в базе столько лишних и бесполезных данных, затрачивать системные ресурсы для кодирования этой бессмысленной информации и для производства последующего сравнения? И все ради чего? Ради желания изобретать велосипед и тешить себя псевдоубеждениями, что ваш алгоритм кодирования (который нельзя декодировать, а можно только сравнить) лучше, чем алгоритмы разрабатываемые тысячами профессионалов по всему миру на протяжении хз скольких лет? Кодировать браузер? Сегодня редких браузер не способен предоставлять лживую информацию о себе. Кодировать ип? Т.е. люди с динамическим ип будут вынуждены каждый раз авторизовываться заново? Кодировать дату? Т.е. пользователь должен будет каждую секунду авторизовываться заново? Вы думаете ваш сайт удержит клиентов, ставя им такие препоны? Ну а если помотреть на эту сторону, как новичек? Я к примеру никогда не смотрел, какие ошибки могут возникнуть. В результате, пришел с утра на работу, открыл системный лог ПХП, и там +100 записей. Круто было. После этого и пришло в голову контролировать даже собственные ошибки. Авторы книг а-ля "PHP для чайников", "Освой PHP за 21 день" и мифический Попов думают также. Если человек новичек, давайте подсуним ему всякий бред. Я до сих пор не вижу смысла во встроенной системе логирования. Поставьте, где нужно перехваты и дело с концом. Одна из основных идеологий классов: класс должен быть однотипным. Если класс неоднотипен, он должен быть разделен на несколько классов. Ваш класс неоднотипен: в нем и авторизация пользователя, и логирование, и работа с базой Mysql. А если у клиента не мускул, а другая база? А если клиент использует логирование на в файл, а в базу? Все, ломай переписывай хорошо отлаженный класс авторизации, ради смены 2-3 функций... Я придерживаюсь принципа: если ты решил создавать туторы, уроки, мануалы, гайды, то ты должен учитывать все нюансы и сразу предоставлять качественный и правильный код, а не делать ссылки на новичков, мол новичок ничего не поймет, поэтому упростим все до уровня бреда. А потом этот новичок вдыхает этот бред и в силу того, что он новичок начинает использовать его повсеместно, полагая, что это правильно, что так и надо. А когда открываешь их код, становится страшно и стыдно. Стыдно, что столь мощный и прекрасный язык новички превращают в посмешище. Извините, что я так резок... Накипело... |
|
|
kotosharik |
29.11.2010, 18:48;
Ответить: kotosharik
Сообщение
#9
|
|
доброго всем времени суток.
Подскажите, пожалуйста, этот скрипт кто-нибудь использовал? Просто попробовал прикрутил себе к сайту, на локалхосте всё замечательно, залил на хостинг, сайт перестал грузиться, выдаёт пустую страницу, отключаю класс - всё нормально. |
|
|
MetSerp |
29.11.2010, 23:50;
Ответить: MetSerp
Сообщение
#10
|
|
kotosharik, ну бегло глянув на код я могу предположить что на сервере отключены короткие теги
[PHP]<? ?>[/PHP] потому как толькао интерпретатор их ловит, скрипт просто падает с syntax_error, а выдача ошибок на сервере наверняка тоже выключена дабы не раздражать:sarcastic: пройдите по скрипту и змените <? на <?php может и заработает, ну а вообще, хоть я и не читал вдумчиво код, но судя по всему он далек от идеала, лучше поищите еще что либо. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Странный трафик на сайте длительное время | 34 | TABAK | 8995 | Вчера, 23:38 автор: Arsenwenger |
|
CryptoCloud — прием USDT, BTC, ETH, LTC на любом сайте | 37 | CryptoCLoud | 10810 | Вчера, 15:37 автор: CryptoCLoud |
|
Боты могут делать пушподписки на моём сайте? | 3 | Megaspryt | 946 | Вчера, 5:18 автор: Skyworker |
|
Быстрый и качественный обмен на сайте Baksman.org Обмен Bitcoin, BTC-e, PM, Qiwi, Yandex money, Карты банк |
53 | Baksman | 33806 | 23.4.2024, 11:29 автор: Baksman |
|
Алтуально ли заработок на сайте? Оцение пожалуйста идею |
10 | hitman20 | 1887 | 1.2.2024, 5:37 автор: Liudmila |
Текстовая версия | Сейчас: 25.4.2024, 0:07 |