PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (14): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец

> Найдено сообщений: 199
Itan Отправлено: 08 Октября, 2011 - 17:54:10 • Тема: проблема с GET • Форум: Вопросы новичков

Ответов: 4
Просмотров: 3304
Спасибо! Разобрался Улыбка
Itan Отправлено: 08 Октября, 2011 - 13:59:18 • Тема: проблема с GET • Форум: Вопросы новичков

Ответов: 4
Просмотров: 3304
Что-то не работает... Растерялся

PHP:
скопировать код в буфер обмена
  1. if (($_GET['pid'] < 1) or !is_numeric($_GET['pid']) or empty($_GET['pid'])) {
  2. // Значит надо сделать релоад на страницу указанного юзера
  3. print '<meta http-equiv="REFRESH" content="0;URL=/?id='.$_GET['id'].'">';
  4. }
Itan Отправлено: 08 Октября, 2011 - 13:53:58 • Тема: проблема с GET • Форум: Вопросы новичков

Ответов: 4
Просмотров: 3304
Здравствуйте! Помогите ситуацию разрешить.

Есть два варианта, какие юзер может ввести в адресную строку.

Либо http://site[dot]ru/?id=1
Либо http://site[dot]ru/?id=1&pid=1

Я проверяю в скрипте: если pid != "", то проверяем: есть ли такая запись в БД. Если нету такой, то переадресовываем на http://site[dot]ru/?id=1

Но проблема в том, что если юзер введет такую строку: http://site[dot]ru/?id=1&pid= то ничего не происходит. А нужна переадресация, потому что строка некорректна. Я не могу сделать проверку isset, т.к. pid необязательно указывать в адресе, он может быть, а может и не быть. Конструкция вида
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['pid']) and $_GET['pid'] == "")
  2. {// Делаем переадресацию}
- тоже не работает почему-то...
Itan Отправлено: 04 Октября, 2011 - 14:35:58 • Тема: подделка $_SESSION • Форум: HTTP и PHP

Ответов: 2
Просмотров: 2237
Здравствуйте! Может ли юзер как-то подделать сессии? Может вопрос глупый, т.к. сессии хранятся на сервере, но все равно, есть вероятность? Я где-то слышал, что можно подделать идентификатор сессии, но я его не использую.

Просто на сайте суть такая: юзер может редактировать свои данные. При аутентификации, в сессию записывается его id. Просто если юзер как-то подставит в сессию чужой id, то сможет редактировать чужие данные, что недопустимо. В данном случае, хранить id в сессии безопасно?
Itan Отправлено: 03 Октября, 2011 - 13:40:36 • Тема: Что такое primary key и зачем он нужен • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 24
Здравствуйте! Объясните, пожалуйста, что такое primary key в MySQL и зачем он нужен.

Он ускоряет выборку из базы при большом объеме БД или как?

Чем он отличается от UNIQUE, INDEX и FULLTEXT?

Только объясните попроще, пожалуйста.
Itan Отправлено: 28 Сентября, 2011 - 10:44:27 • Тема: Слова справа-налево • Форум: Вопросы новичков

Ответов: 3
Просмотров: 228
Спасибо!
Itan Отправлено: 28 Сентября, 2011 - 09:28:16 • Тема: Слова справа-налево • Форум: Вопросы новичков

Ответов: 3
Просмотров: 228
Здравствуйте! Есть ли такая функция, которая переворачивает слова наоборот? Например передаю ей "Слово", а возвращает "оволС".
Itan Отправлено: 29 Августа, 2011 - 18:40:29 • Тема: Увеличить 000 на единицу • Форум: Вопросы новичков

Ответов: 1
Просмотров: 124
Здравствуйте! Подскажите, пожалуйста, как в цикле получить числа от 000 до 999.

Такой код не работает:
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($x = 000; $x <= 999; $x++) {
  3. print $x;
  4. }
  5.  


Т.е. мне нужна последовательность 000, 001, 002, ..., 998, 999.
А этот код выводит: 0, 1, 2, ..., 999.
Itan Отправлено: 18 Августа, 2011 - 18:05:35 • Тема: Авторизация с помощью куков • Форум: HTTP и PHP

Ответов: 9
Просмотров: 7100
Во, я придумал как надо сделать!

Есть salt.php, который находится выше корня сайта. В нем строка.

Когда чел регается, то в базу идет его sha1(sha1(salt.password.salt))

При авторизации:
    очищаем введенный пасс и логин от мусора (на всякий случай)

    Хэшируем введенный пасс с солью: sha1(sha1(salt.password.salt))

    Сравниваем с базой


Если сравнение дает false, то доступ запрещен.
Если true, то:
    устанавливаем куки: ID юзера и Хэш пароля с солью

И чтобы снизить нагрузку на базу, устанавливаем сессию с Хэшем пароля из базы.

На каждой странице делаем проверку:
PHP:
скопировать код в буфер обмена
  1. If (установлена сессия) {
  2.         if (хэш из кук == содержимому сессии) (
  3.                 то продолжаем авторизацию, показываем *секретное* содержимое
  4.         } else {
  5.                 запрет на просмотр содержимого, переадресация на логин форму
  6.         }
  7. } else {
  8.         #Если сессия пустая
  9.         Подключаемся к базе, берем хэш пароля
  10.         Если хэш из куков совпадает с хэшом в базе, то
  11.                 устанавливаем сессию с хэшем пароля
  12. }


Как думаете, такая защита сойдет для аутентификации?
(Добавление)
Таким образом, если хакер взломает базу, то подставить хэш не сможет, потому что не знает, как он получился. (Правда, он может испортить мою базу, но это ругая тема.)

А от стыривания куков можно сделать привязку к IP - мне все равно нужна авторизация только на 15 минут.
Itan Отправлено: 18 Августа, 2011 - 14:20:35 • Тема: Авторизация с помощью куков • Форум: HTTP и PHP

Ответов: 9
Просмотров: 7100
Цитата:
генерировать случайную строку, и каждый раз записывать ее в базу и в куки


Не пойдет. А если 2 человека зайдут по одним логином с разных компьютеров? например, на корпоративную почту. У того, кто первый зашел сравнение строк из кук и базы будет давать false === кик. Так не надо.

Цитата:
не проще ли записать все данные о юзере в сессию


Разве сессии не закрываются после закрытия браузера? Мне нужно, чтобы человек мог находиться под своим логином только 15 минут, а потом ре-логин.
Itan Отправлено: 18 Августа, 2011 - 13:56:52 • Тема: Отметить людей • Форум: Вопросы новичков

Ответов: 2
Просмотров: 157
На фотографиях или где?
Itan Отправлено: 18 Августа, 2011 - 13:31:26 • Тема: Авторизация с помощью куков • Форум: HTTP и PHP

Ответов: 9
Просмотров: 7100
Дак как-то не хочется передавать хэш пароля в куки. А такая схема как?:

Таблица в БД:
id | login | password | hash | string

Файл salt.php содержит какую-то определенную строку, сделанную заранее.

При регистрации юзера генерируем случайную строку и записываем в string.

Затем после успешной аутентификации подключаем salt.php и делаем хэш(string.salt). И записываем этот хэш в базу в столбец hash. И в куки отправляем хэш.

И на странице, где нужна проверка авторизации делаем так:
подключаем salt.php
берем из базы hash и string.

если хэш(string.salt) != хэшу из кук, то чистим куки и пересылаем юзера на форму логина, иначе показываем нужную инфу.

Как такая схема? Или бред параноика? Улыбка
Itan Отправлено: 18 Августа, 2011 - 07:23:24 • Тема: Авторизация с помощью куков • Форум: HTTP и PHP

Ответов: 9
Просмотров: 7100
Я вот вроде все понял, как это работает.
Только непонятно, как реализовать авторизацию, если два юзера используют один аккаунт, например, корпоративный почтовый ящик. В инете не смог найти.

Например человек А залогинился на сайте. Ему в куки ушла строка случайного хэша; эта же строка ушла в базу, чтобы потом был "автологин".

Но если после авторизации человека А, с другого компьютера авторизуется человек Б, то хэш в базе будет перезаписан на новый и отправится ему в куки.

После этого челоек А при переходе на другую страницу автоматически кикается, т.к. у него не совпадает хеш в куках с хешом в базе.

Как можно решить эту проблему?
Itan Отправлено: 17 Августа, 2011 - 16:24:40 • Тема: Авторизация с помощью куков • Форум: HTTP и PHP

Ответов: 9
Просмотров: 7100
Да везде по-разному. У меня в одной книге вообще без соли, во второй непонятно. В инете искал, в одном примере постоянная строка хэшируется вместе с логином, во втором - генерируется каждый раз.
Itan Отправлено: 17 Августа, 2011 - 16:05:46 • Тема: Авторизация с помощью куков • Форум: HTTP и PHP

Ответов: 9
Просмотров: 7100
Здравствуйте! Я немного не понимаю, как работает авторизация с куками.

Вот как я вижу: юзер зашел на сайт, залогинился. Если логин и хэш пароля совпадают с данными базы, то установить ему куку, а потом на всех сценариях писать session_start и проверять, совпадает ли хеш из куки с хешом в базе.

Только я не пойму какой кеш надо вписывать в куку и в базу для сравнения. Там нужна какая-то "соль" - её нужно отдельно хранить или генерировать после каждой успешной авторизации и перезаписывать в куку и в базу? И как это вообще работает? Объясните попроще, пожалста.

Страниц (14): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB