понедельник, 29 июня 2015 г.

Это я, Старший Брат Печкин...

У знакомого предпринимателя работает человек 15 водителей; доставляют посылки для одной известной логистической фирмы. Много рассказывал, как там кидают с оплатой. Он сам попал на 50 тысяч, и только после вмешательства Би-Би-Си деньги вернули.

Но особенно интересно другое: говорит, что сейчас в момент, когда клиент ставит подпись световым пером на планшете, его автоматически фотографируют. Я очень удивлен: думал, что data protection law не позволяет такое делать без согласия или хотя бы уведомления клиента...

Чалма

У знакомого - небольшая сеть магазинов. Работал у них индус-сикх. Хорошо вроде работал, и со временем ему полностью доверили магазин. Жил он там же - в квартире над магазином, которая принадлежала тому же хозяину.

Год прошел, и как-то сильно упала прибыль. Хозяин заподозрил неладное. Тем более, что индус резко засобирался назад, на родину. Вечером хозяин - косая сажень в плечах - зашёл к нему домой поговорить по душам. И заставал с поличным: индус как раз снимал чалму на ночь. Оказывается, в ней он хранил все украденные деньги...

Кнопка "Увести"

Подруга работала учителем английского языка в колонии для несовершеннолетних. С одной стороны, платили лучше, чем в школе. С другой - детки, конечно, своеобразные, и удерживать класс под контролем непросто.

"Когда они начинали слишком сильно буянить, я нажимала кнопку, и конвой их уводил".

А "обычные" другие учителя могут только мечатать о такой волшебной кнопке :)

пятница, 26 июня 2015 г.

AdSense: 'payment expired'

Необычная проблема с AdSense. Они вроде отправили очередной чек, а через два дня прислали емейл: "Ваш чек отменен, потому что payment method expired". Если бы мы получали деньги на карточку, то было бы понятно - у карточки закончилися срок действия. Но как может закончиться срок действия у почтового адреса?

Насколько я понял, они просто хотели, чтобы мы подтвердили: да, по-прежнему можно слать деньги на этот адрес; да, по-прежнему можно его выписывать на такое-то имя. Наверное, дело в том, что наш аккаунт очень старый - уже лет 7 ему. Видимо, Гугль решил провести аудит. Только зачем чеки отменять? Можно было предупредить заранее...

воскресенье, 21 июня 2015 г.

Полив под дождем

Приходили друзья с маленькими детьми. Несмотря на дождь, дети поливали из шланга огород (и немного друг друга). Нашли в гараже Маринины удобрения и всё усердно засыпали. Хороший урожай будет - надо их чаще звать :)

среда, 17 июня 2015 г.

25 пенсов

Женщина везла четырехлетнюю дочку из садика. Водитель автобуса не захотел брать 25 пенсов монетками в один и два пенса. Она уперлась: "Деньги есть деньги". Водитель вызвал полицию. Оказывается, формально он таки был прав: по закону можно не принимать более 20 пенсов бронзой. Полицейский нашел простой выход: дал пассажирке свою недостающую монетку в 5 пенсов. Автобусная компания извинилась.

А у меня тоже был случай с автобусом и негритянской мамашей. Оказывается, по технике безопасности положено не больше двух инвалидов или детских колясок на автобус, причем у инвалидов приоритет. Водитель минут 20 заставлял её сойти. "А мне только одну остановочку!" Пассажиры вежливо намекали, что она бы уже давно дошла пешком, но получали матерные ответы. Водитель тоже грозил вызвать полицию. В конце концов спросил диспетчера: "Ну, ладно - на одну остановку можно". Через полчаса мы приехали и сошли, а она всё ещё ехала...

пятница, 12 июня 2015 г.

HTTP 404.11

Один из популярных хакерских методов - double escape sequence. По умолчанию ASP.NET его отлавливает и выдает сообщение: "A potentially dangerous Request.Path value was detected from the client". Если не делать <requestFiltering allowDoubleEscaping="true"/>, то вроде как опасности нет.

Опасности нет, а неудобства есть. Мы пишем всё ошибки в лог и постоянно его мониторим. Если вдруг идет много ошибок, админы получает емейлы и SMS, всё бегают и кричат: "Что происходит?!" А я что - я говорю: "Ну, нас атакуют. Сделать ничего нельзя. Сидим и ждем, пока перестанут". Кроме неудобств, такие атаки могут ухудшать производительность сайта.

Поэтому хотелось бы, чтобы double escape sequence отлавливалась не на уровне приложения ASP.NET, а раньше. К счастью, есть простой выход. IIS поддерживает не только стандартные статусы HTTP, но и "подстатусы". Например, в случае double escape sequence он генерирует ошибку 404.11 (хотя с точки зрения внешнего мира это просто стандартная 404).

А мы её теперь можем перехватить:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

   ...

  <system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace" defaultPath="/Errors/ServerError">
      <clear/>
      <!-- The request filtering module is configured to deny a request that contains a double escape sequence.-->
      <error responseMode="File" statusCode="404" subStatusCode="11" path="Static\HackingAttempt.txt"/>
      <error responseMode="ExecuteURL" statusCode="403" path="/Errors/NotSupported"/>          
      <error responseMode="ExecuteURL" statusCode="404" path="/Errors/PageNotFound"/>
      <error responseMode="ExecuteURL" statusCode="410" path="/Errors/Gone"/>
      <error responseMode="ExecuteURL" statusCode="500" path="/Errors/ServerError"/>
      <error responseMode="ExecuteURL" statusCode="503" path="/Errors/ServiceUnavailable"/>
    </httpErrors>

  </system.webServer>

</configuration>

Что тут происходит? ASP.NET-приложение выдает всякие красивые странички для разных видов ошибок (403 / 404 / 410 / 500 / 503). Там есть лототип, "ой, извините, страница не найдена, может предложить вот это и это", "можно сообщить администратору" и т.д. Но для хакеров сильно много чести. Для них я просто возвращаю содержание текстового файла HackingAttempt.txt из каталога Static (можно хранить в другом месте). Обратите внимание, что слэши в другую сторону, потому что это путь к файлу, а не URL. Внутри файла можно написать: "Пожалуйста, не взламывайте нас!" Или что-то нейтральное: "Page not found". Поскольку строка с statusCode="404" subStatusCode="11" идет перед statusCode="404", то "нормальная" страница 404 возвращается только если ошибка не связана с double escape sequence

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

Ratings by outbrain