но когда я хочу сделать так чтоб он брал 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 |
a можно узнать в чем имеено заключается опасность? если я поставлю вход только по IP то разве можно это обойти как то?
И кстати спасибо тебе и Ice за помощь, очень помогли.
Спустя 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 методом данные... и если это так...
БрутФорс очевиден и даже на много проще чем может показаться.
Так как даже если использовать конкретную очередность... то все равно думаю метод Логин/Пароль надёжнее.
Это я так по размышлял в слух =)
Почему ?
Должен же он отправлять POST/GET методом данные... и если это так...
БрутФорс очевиден и даже на много проще чем может показаться.
Так как даже если использовать конкретную очередность... то все равно думаю метод Логин/Пароль надёжнее.
Это я так по размышлял в слух =)
Спустя 8 минут, 49 секунд (18.01.2010 - 09:15) phz написал(а):
Цитата (twin @ 17.01.2010 - 05:18) |
На самом деле можно еще проще, но суть даже не в этом. Нельзя в базу совать непроверенные данные. IP тоже вещь потенциально опасная.<?php |
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 нельзя.