|
|
|
| Здравствуйте.
Извините запутался., может у кого свежо по памяти.
Как определить является ли переменная числом и число целое
Дело в том что если
Функция не вернет ничего
Спасибо. | |
|
|
|
|
|
|
|
для: добряк
(11.03.2013 в 22:16)
| | вообще-то в любом случае вернет либо true либо false. в вашем случае однозначно false. кстати про кавычки не забыли? | |
|
|
|
|
|
|
|
для: psychomc
(11.03.2013 в 22:54)
| | Ничего не возврашает, я же и так и отладочном режиме пробую
Вот есть переменна типа $_GET.['id']
если должны быть целые натуральные числа, а кто то воткнет ?id=1ю3 и сайт...... висит.
Теперь подряд очередь, и проститесь с сайтом | |
|
|
|
|
|
|
|
для: добряк
(11.03.2013 в 23:14)
| | как мне здесь же здраво подсказывали: просто написать
$id = (int)$_REQUEST["id"]
|
| |
|
|
|
|
|
|
|
для: btr
(11.03.2013 в 23:21)
| |
$id = (int)$_REQUEST["id"]
|
Еще больше загадок
Дело в том, что $_GET['id'] возвращает строковый тип, это раз
Если там 1Ю2, то дальше еще хуже
(int) (1Ю2 )вернет 1 | |
|
|
|
|
|
|
|
для: добряк
(11.03.2013 в 23:14)
| | что за бред... что вы потом делаете с этим параметром? подставляете в запрос? вам всё правильно сказали - преобразуйте в целое вне зависимости от того что пришло. и всё будет работать так как надо. неужели принципиально, чтобы id 1Ю2 после преобразования было 12? | |
|
|
|
|
|
|
|
для: psychomc
(11.03.2013 в 23:40)
| | Для меня принципиально, что если 1ю2, то ответить что запрос плохой и ничего не делать.
А вы не кричите на меня.
Ко мне тут bingo bot и msnbot залетели штук 30 и стали дупасить вот такой фигней каждую секунду по 5-10 раз. А если вам не известны таие вещи, то и не надо оскорблять. В сторонке побудьте, может добрые люди и найдутся, кто хлебнул или не хочет.
Только не грубите пожалуйста
От хостера письмо
Ваш аккаунт был приостановлен. Информация о приостановке заказа :
Дата окончания: 23/03/2013
Причина приостановки: Get запросы GET \xd1\x81\xd1\x92\xd1\x81\xe2\x80\x93\xd1\x81\xd1\x93\xd0\xb2\xd1\x92\xe2\x84\xa2\xd1\x81\xd1\x92\xd0\xb2\xc2\xb5\xd1\x81\xd1\x93\xd1\x81\xe2\x80\xba\xd1\x81\xd1\x92\xd1\x81\xe2\x80\x93
грузят сервер, и создают аномальную нагрузку на сервер.
Пожалуйста свяжитесь с нами как можно быстрее для принятия мер и продления вашей услуги.
------------------------------
Дальше боты перебирают все варианты, все кодировки, языки
Короче посещаемость была 8000 теперь 300 с трудом и ползу вниз, хотя не гружу сервер, все параметры в норме | |
|
|
|
|
|
|
|
для: psychomc
(11.03.2013 в 23:40)
| | не обращайте внимания, такого хама давно небыло на форуме | |
|
|
|
|
1.7 Мб |
|
|
для: Valick
(12.03.2013 в 00:07)
| | Так нет, вот статья, не я писал, но у меня еще хуже вышло. Меня они и раньше пробовали, но не сломали, а 1 марта, полностью разнесли
Тема: Помогите атакует поисковый робот! bingbot (Прочитано 2761 раз)
http://joomlaforum.ru/index.php/topic,192646.0.html
Таких статей много
У меня такая же ситуация, но не надо на личности пожалуйста переходить, у каждого может такая беда случится
Вчитайтесь пожалуйста хоть в эти строки
Кстати файл robots.txt они вообще не признают, гугл в том же числе( не все но период обхода ему так не задать)
Меня обходит гугл со скоростью 1-2 запроса в секунду и все нормально, ну когда добавились эти в панику бросился хостер и отключил сайт. С гуглом нагрузка на сайт 10-15 процессов, а с ними все вылетело.
Предполагаю, что закрыться от них можно через . htaccess. Но Гугл и другие то же делат нестандартыные запросы и сайт подвисает, а то в 503 уходит
Прилагаю файл, результатов этих роботов
Борьба до крови Сейчас меньше, 503 только 84, зато повреждений тьма, сайт упал. | |
|
|
|
|
|
|
|
для: добряк
(12.03.2013 в 00:20)
| | я конечно тоже вроде бота :) но в принципе есть резон в посте psychomc... ведь Вы ждете определенного id? может, устроить проверку, а подходит ли (int)$_request('id') под определенный диапазон (нп с 1 до 2456) если нет, ексит нафик :)
еще вариант: если strval((int)$_request['id']) == $_request['id'] тогда работать, если нет - явно хрень :) | |
|
|
|
|
|
|
|
для: btr
(12.03.2013 в 00:57)
| | Я 4 года не попадал, дырки не видел, но вот нашлись умные боты, методом случайного перебора и периодических заходов, нашли место и все рухнуло. Но это их профессия, там же не один человек и не те мощности
Я немного в сильном шоке от таких событий. Пробую разные варианты - что то где то не то, дырочка остается
(int)$_request('id') - я не долго, но попробовал, что то не пошло, там сложней ситуация, когда используют сложные комбинации кодировок и языков.
У меня много примеров странных запросов, я их когда пускаю то пробивают.
Вообще, мне сейчас пришла одна не плохая мысль, возможно лучшая, а может просто достаточная.
Таймаут я сделал, не пробьют. если зависну то выскочу. Другие заглушки понавешал.
На фотке видно, что 503 пошли вниз, завтра их не будет совсем. Сечас ботов нет, кроме Гугла. Но они придут и знают слабые места. Они с перерывом 2-3 недели. Либо добьют, либо ...
Но вот это место. Буду проверять. Если кто даст дельный совет, благодарен буду и в долгу не останусь.
Извините если я не заметил и что не так написал, прошу прощения у всех | |
|
|
|
|
|
|
|
для: добряк
(12.03.2013 в 01:13)
| |
if(!is_numeric($_GET['id'] )) exit();
|
| |
|
|
|
|
|
|
|
для: Valick
(12.03.2013 в 10:02)
| | Всем хорошо, но точки пропустит и еще там что то
А если регулярное, пройдет?
$id_get = trim($_GET['id']) ;
$exit = preg_match( "/[^0-9]{1,}/i" , $id_get) ;
|
Если $exit ==1, то в случае робота ответ 400, а человеку внушение
Есть в регулярном неточность?
P.S.
Когда в запросе дается то, что не существует в базе, то поиск произойдет по всей базе и время работы будет самым максимальным. Если подряд дать такие запросы - фатальная
Представьте если бы был в Гугле поиск по точному совпадению несуществующего слова и не было бы отсева, он бы это слово искал по все базе "вечность" | |
|
|
|
|
|
|
|
для: добряк
(12.03.2013 в 13:57)
| | А чем плох вариант от btr?
Только там надо тождественное равенство еще добавить, иначе вариант типа '0e1' прокатит.
<?php
$test = array(
'12',
'1.34',
'0e1',
'string',
);
echo '<pre>';
array_map(function($v) {
var_dump(strval((int) $v) === $v);
}, $test);
|
Выведет:
bool(true)
bool(false)
bool(false)
bool(false)
|
т.е. вот проверка strval((int) $v) === $v. Преобразуем строку в инт, потом обратно в строку и сравниваем с исходной.
PS или так (string)(int) $v === $v | |
|
|
|
|
|
|
|
для: Igorek
(12.03.2013 в 14:29)
| | Я вчера пробовал от btr , где то слабинку нашел, дальше не стал анализировать.
По идее, если числа, то надо проверять еще на максимальную длину.
Самое коварное поиск по словам или фразам в базе.
Если слова нет "укпаукпаукпакепке343вввпенрног" будет копать всю базу, аптайм растет, поисковики рейтинг опускают
Я что то вроде последнего тоже пробовал, но просто проверял на $v == (int) $v, как то не очень.
Но сам ваш алгоритм, оченнь полезный во многих случаях жизни.
Спасибо за вариант, я попозже изучу, но может ребятам интересно будет тоже | |
|
|
|
|
|
|
|
для: добряк
(12.03.2013 в 15:16)
| | В догонку, предложенный вариант (string)(int)$v === $v, работает только, если число в строке не больше PHP_INT_MAX, т.е.
<?php
$v = '9999999999999999999999999999999999';
var_dump((string)(int)$v ===$v); //false
|
т.к. (int)$v в данном случае равно PHP_INT_MAX.
А $v == (int)$v всегда true, для gettype($v) == 'string', т.к. при сравнении числа со строкой строка приводится к int.
<?php
$v = 'str';
var_dump($v == (int)$v); // true
|
| |
|
|
|
|
|
|
|
для: Igorek
(12.03.2013 в 16:18)
| | Я на регулярном установил. Вроде устраивает на все варианты. Ваше предложение интересное. Может дублером поставлю | |
|
|
|
|
|
|
|
для: добряк
(12.03.2013 в 17:02)
| | думаю зря вы пытаетесь от ддос и т.п защититься средствами PHP. и что вы будете делать, когда ваши боты начнут отправлять нормальные запросы? жесточайшей выпилите этот кусок ненужного кода? | |
|
|
|
|
|
|
|
для: psychomc
(15.03.2013 в 11:53)
| | Сам ддос - частые запросы подавляет хостер.
Я же погорел на не правильных запросах
Собственно, какие еще есть вариаты. Я с удовольствием бы выслушал любой конструктивный вариант, даже если он кажется плохим.
А вот тут я привел пример файла access.log, причем такие вещи сегодня. ноя сейчас не вылетаю
http://www.softtime.ru/forum/pstadd.php?id_forum=2&id_theme=89151&id_post=531642 | |
|
|
|
|
|
|
|
для: добряк
(15.03.2013 в 12:24)
| | по вашему access.log для меня очевидно, что нужно блочить мудаков по ip через .htaccess. по крайней мере я бы начал с этого | |
|
|
|
|
|
|
|
для: psychomc
(15.03.2013 в 12:40)
| | Сами роботы, Гугл дают кривые запросы. Я понимаю для того, что-бы проверить сайт на противоударность. Я же не могу Гугл .htaccess, так он для меня основной поставщик посетителей. | |
|
|
|
|
|
|
|
для: добряк
(15.03.2013 в 14:37)
| | значит копать нужно в другую сторону. гугл не может индексировать страницы на вашем сайте, на которые нету ссылок со страниц вашего сайта, либо других сайтов. | |
|
|
|
|
|
|
|
для: psychomc
(15.03.2013 в 14:53)
| | Не знаю такой истины. У меня от него, Гугла, очень много грязи и чепухи.
Я предполагаю что он тестирует таким способом.
У гугла есть требования к URL, у него прописано, вот он наверное и проверяет сайт, тестирует
Но самые грязные и коварные оказались мелкософт, бинго.
Все языки перебирают, 20-40 роботов одновременно в секунду на разных языках запросы делают.
Причем, через минут 20-30 их меняют другие такие же но с другими IP.
Вообщем поведение у них схожее, только бинго не сканирует получается а атакует.
Сейчас их нет, но пойдет 2-3 недели появятся сновыми IP новые боты и если не успеешь например в .htaccess, то завалят либо хостер меня отключал из-за перегрузки сервера
Вот еще новенький для меня появился, сыпет одну чепуху
http://www.majestic12.co.uk/bot.php.
Банить или как то то там иначе надоест, поэтому я добавил простоотсев дурацких запросов | |
|
|
|
|
|
|
|
для: добряк
(15.03.2013 в 15:04)
| | думаю, вы ошибаетесь, проблема скорее всего где-то в вашем сайте http://otvety.google.ru/otvety/b-thread?force=1&tid=735405626f008d5a | |
|
|
|
|
|
|
|
для: psychomc
(15.03.2013 в 15:32)
| | Ошибаюсь в чем. Во всем? Такое невозможно.
Я так не понимаю о чем.
Я о документации Гугла, что URL должен удовлетворять требованиям.
Одно из них, если у вас ЧПУ и оно случайно испортилось у пользователя, то все равно пользователь должен попасть на страницу .
Другие требования ошибки HTTP.
Если мой сайт работает нейстойчиво, то ранг будет ниже.
Иначе, ответьте на вопрос.
Зачем Гугл постоянно гуляет по пройденным страницам?
Вы ответьте на вопрос.
Мой ответ, проверяет усточивость сайта и стабильность выдачи результатов. | |
|
|
|
|
|
|
|
для: добряк
(15.03.2013 в 16:20)
| | то зачем он гуляет по пройденным вас особо волновать не должно. дело в том, что он не гуляет по страницам, ссылок на которые нет на вашем сайте либо на других сайтах. почему у вас он это делает, в этом и надо разобраться. подозреваю, что проблема не в гугле | |
|
|
|
|
|
|
|
для: psychomc
(15.03.2013 в 16:31)
| | У вас наверное статические страницы? И на сайте ничего не меняется?
У меня динамические.
Пользователи редактируют, удаляют, говно втыкают - и вы предлагаете что бы гугл все это все показывал и такие сайты были на первых местах.
Я потерял интерес. Вы не методологию обсуждаете а копаете под человека или под сайт.
Привожу последний пример, что я и сделал.
http://www.opennet.ru/base/dev/mysql_search.txt.html
From: Дмитрий Лебедев, Олег Юсов
Первым делом надо порезать ручками строку.
$search = substr($search, 0, 64);
64 символов пользователю будет достаточно для поиска. Теперь каленым
железом выжжем все "ненормальные" символы.
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
|
Я обсуждаю вопрос который тут ясно постовлен как первое дело и что надо железом выжигать
Извините, ваши подозрения в мой адрес, я обсуждать не буду | |
|
|
|
|
|
|
|
для: добряк
(15.03.2013 в 16:43)
| | удачи | |
|
|
|
|
|
|
|
для: psychomc
(15.03.2013 в 16:49)
| | PHP5 практика создания web-сайтов_КузнецовМаксим - 2008. стр 328
Проверка корректности чисел является важной задачей.
Разработчики наивно полагают, что....
Однако вместо чисел, может быть введен текст и даже целые минипрограммы деструктивного действия, приводящие в лучшем случае к сбою работы , а вхудшем - к взлому.
Вот это и есть моя текущая проблема.
psychomc Ваши пояснения имеют важное, даже чрезвычайно важное значение, но у меня другая сейчас проблема
Ну извините, не в тему получается, а за помощь и желание помочь большое вам спасибо | |
|
|
|
|
|
|
|
для: добряк
(15.03.2013 в 17:06)
| | всё верно. решение - приведение типа к целому числу с помощью (int) или intval до использования в запросе. что делать с теми, кто отправляет неправильные запросы, это уже другой вопрос. и я считаю решать его нужно не с помощью php | |
|
|
|
|
|
|
|
для: btr
(12.03.2013 в 00:57)
| | Кстати странную вещь заметил.
Под ip гугла, зашел человек. Я давно записываю геометрию перемещения. У людей психология другая. Удивился. Вроде IP ГУГЛА. раз пять перепроверил, то человек, то робот. Вообщем киборг какой то. | |
|
|
|
|