[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вход в Админку по IP
test22
хочу поставить ограничение по IP, впринцепе скрипт работает.
но когда я хочу сделать так чтоб он брал IP с базы, он берет оттуда только однин IP а остальных он не видит. Вот сам скрипт, кто может помогите пожалуйста.

$result = mysql_query("SELECT ip FROM permit_ip");
$myrow = mysql_fetch_array($result);
do
{

// список разрешенных IP адресов через пробел
$allowed_ips = $myrow["ip"];

$ips = explode(" ",$allowed_ips);
}
while($myrow = mysql_fetch_array($result));
if (array_search($_SERVER["REMOTE_ADDR"],$ips) === FALSE) {
echo "<center><p>Если ты видишь это сообщение, значит ты не должен тут находиться!!! </center>";
exit;
};




Спустя 4 часа, 33 минуты, 7 секунд (17.01.2010 - 07:35) Ice написал(а):

<?php
$result = mysql_query("SELECT ip FROM permit_ip");
$myrow = mysql_fetch_array($result);
$ips = array();
do {
// список разрешенных IP адресов через пробел
$allowed_ips = $myrow["ip"];
array_push($ips, $allowed_ips);
}
while($myrow = mysql_fetch_array($result));
if (array_search($_SERVER["REMOTE_ADDR"],$ips) === FALSE) {
echo "<center><p>Если ты видишь это сообщение, значит ты не должен тут находиться!!! </center>";
exit;
}

?>

Ну можно было б сделать и проще, например:

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT ip FROM permit_ip WHERE ip=$ip";
$sqlex = mysql_query($sql);
if(mysql_num_rows($sqlex) < 1){
?>

<center><p>Если ты видишь это сообщение, значит ты не должен тут находиться!!! </center>

<?php
}else{
// инструкции
}
?>

Спустя 42 минуты, 38 секунд (17.01.2010 - 08:18) twin написал(а):
На самом деле можно еще проще, но суть даже не в этом. Нельзя в базу совать непроверенные данные. IP тоже вещь потенциально опасная.

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sqlex = mysql_query("SELECT COUNT(*) AS `cnt` FROM permit_ip WHERE ip=". ip2long(long2ip($ip)));

if(mysql_result($sqlex, 0) < 1){
?>

<center><p>Если ты видишь это сообщение, значит ты не должен тут находиться!!! </center>

<?php
}else{
// инструкции
}

Спустя 5 часов, 18 минут, 57 секунд (17.01.2010 - 13:36) Guest написал(а):
Цитата (twin @ 17.01.2010 - 05:18)
На самом деле можно еще проще, но суть даже не в этом. Нельзя в базу совать непроверенные данные. IP тоже вещь потенциально опасная.

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sqlex = mysql_query("SELECT COUNT(*) AS `cnt` FROM permit_ip WHERE ip=". ip2long(long2ip($ip)));

if(mysql_result($sqlex, 0) < 1){
?>

<center><p>Если ты видишь это сообщение, значит ты не должен тут находиться!!! </center>

<?php
}else{
// инструкции
}

a можно узнать в чем имеено заключается опасность? если я поставлю вход только по IP то разве можно это обойти как то?

И кстати спасибо тебе и Ice за помощь, очень помогли. smile.gif

Спустя 27 минут, 59 секунд (17.01.2010 - 14:04) twin написал(а):
Я не про ту опасность. Я про инъекции. А вход по айпи - идея плохая. Они сейчас поголовно динамические, везде прокси. Так что проверять IP имет смысл только во время текущей сессии, не далее.

Спустя 8 часов, 14 минут, 37 секунд (17.01.2010 - 22:19) grigoriyi написал(а):
а как лучше проверять вход?

Спустя 14 минут, 51 секунда (17.01.2010 - 22:34) twin написал(а):
Ничего пока особо революционного не изобрели. Логин-пароль.
Есть правда разработки с графическими паролями, но это экзотика.))

Спустя 8 часов, 15 минут, 57 секунд (18.01.2010 - 06:50) anonymouse написал(а):
Цитата (twin @ 17.01.2010 - 19:34)
Ничего пока особо революционного не изобрели. Логин-пароль.
Есть правда разработки с графическими паролями, но это экзотика.))


Расскажи об экзотике плз.

А что до зашиты.

Я использую СЕССИЙ ! Создаю хэшь - и проверяю его...
Код движка давать, никому не давал, так что пусть дерзают люди как я его создаю.
П.С. конечно когда придет очередь до Сохранения пароля - и тут нужны будут Coocki тогда думаю лажа.

Спустя 2 часа, 7 минут, 25 секунд (18.01.2010 - 08:57) twin написал(а):
Сессия актуальна после аунтификации. Но сначала то нужно пустить юзера.
Про графические пароли читал где то. Вот дают картинку, ты должен отметить на ней несколько точек. И при следующем заходе должен в эти точки тыкнуть мышом.
Не знаю на сколько это надежно и удобно, но факт есть факт, такая разработка имеет место.

Спустя 8 минут, 23 секунды (18.01.2010 - 09:06) anonymouse написал(а):
Идея разработки интересна ... но думаю проблема будет её использования на базе ПХП.
Почему ?

Должен же он отправлять POST/GET методом данные... и если это так...
БрутФорс очевиден и даже на много проще чем может показаться.
Так как даже если использовать конкретную очередность... то все равно думаю метод Логин/Пароль надёжнее.


Это я так по размышлял в слух =)

Спустя 8 минут, 49 секунд (18.01.2010 - 09:15) phz написал(а):
Цитата (twin @ 17.01.2010 - 05:18)
На самом деле можно еще проще, но суть даже не в этом. Нельзя в базу совать непроверенные данные. IP тоже вещь потенциально опасная.

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sqlex = mysql_query("SELECT COUNT(*) AS `cnt` FROM permit_ip WHERE ip=". ip2long(long2ip($ip)));

Twin, а тут правильно ip2long(long2ip($ip))

$sqlex = mysql_query("SELECT COUNT(*) AS `cnt` FROM permit_ip WHERE ip=". ip2long(long2ip($ip)));


Или с начало конвертирует строку, а потом генерируем айпи в формате с точкой:

long2ip(ip2long($ip))

Спустя 10 минут, 58 секунд (18.01.2010 - 09:25) twin написал(а):
Цитата
БрутФорс очевиден и даже на много проще чем может показаться.

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

А еще один плюсик - более надежный способ хранения пароля. Если трояном выгребут данные с компа, хакеру все картинки визуально просмотреть жизни не хватит.

Цитата
Или с начало конвертирует строку, а потом генерируем айпи в формате с точкой:

Ну да, попутал маненько. Только при такой проверке нужно быть осторожнее, можно получить отрицательное значение. Вот так надежнее:
long2ip(sprintf("%u\n", ip2long($ip)));

Спустя 5 минут, 57 секунд (18.01.2010 - 09:31) phz написал(а):
twin, вот я как понял то лучше везде где в базу записывается айпи пропускать его через long2ip(sprintf("%u\n", ip2long($ip))); для безопастности?

Спустя 10 минут, 15 секунд (18.01.2010 - 09:42) twin написал(а):
Есть и другие способы проверки, этот не самый быстрый наверно. Но вообще в чистом виде пускать в базу IP нельзя.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.