Конкурс окончен

И у нас есть победитель, которому я сегодня отнесу приз. Поздравляем Bumbarashka!

Приз

Приз

Пара слов о проведении конкурса. Sergey Parashchenko был очень близок. Если бы он продолжил свой перебор еще на 4 варианта (с 292 до 296), то приз достался бы ему. Очень хорошо посчитал вначале Eugene Levchuk. Единственное, что он посчитал сам пост, но не посчитал Shoutbox и Фильмы1. Ну и цифры могли не сойтись на небольшие числа, так как два комментария были добавлены в другие ветки после начала конкурса.

Всем огромное спасибо за участие! Надеюсь, что вам понравилось.


  1. Этого раздела больше нет

6 месяцев

Пятница! Но не просто так какая-то пятница, а отличная пятница. А всё потому, что у меня есть дополнительный стимул праздновать и веселиться, ведь сегодня блогу исполняется 6 месяцев!

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

Количество комментариев

Количество комментариев

Когда число будет угадано, я заменю его нередактированной версией. Уже угадали.

Удачи!

UPD: Как мне сказали, подарок будет готов только завтра. У вас еще полно времени на угадывание. уже сегодня. Но время в любом случае не ограничено.

UPD2: К сожалению, я не сильно позаботился о безопасности, чем и воспользовались некоторые из участников. Пришлось применить «божественное вмешательство». Так что подарок еще не разыгран, и у вас есть все шансы.

UPD3: Приз был разыгран и будет доставлен вечером своему новому владельцу. Мои поздравления, Bumbarashka!

Хранение сессии на клиенте

Как вы, должно быть, знаете, хранить пользовательские данные на клиентской стороне плохо: их ведь может подделать злостный хакер. Но сегодня я вам расскажу, как можно безопасно хранить сессионные данные, не волнуясь за их сохранность. Расскажу на примере Snap Framework, на котором и написан этот блог.

Суть метода — шифрование (кто бы мог подумать). Snap для своих сессий использует библиотеку Web.ClientSession, а поэтому что и как обрабатывается можно смело подсмотреть в документации:

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

Skein — это просто хороший алгоритм хеширования. К сожалению, он не победил в конкуре на замену SHA-2, и название SHA-3 получил другой алгоритм. Поэтому самое время заменить Skein на новоявленный SHA-3 — Keccak.

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

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

Хозяйке на заметку: чтобы вашу сессию нельзя было увести с помощью JavaScript, добавьте в заголовок Set-Cookie параметр HttpOnly. Куки с таким параметром не появляются в document.cookie.

Осталась одна загадка, связанная с моим сайтом. Кука _session передается как сессионная и должна удаляться с закрытием браузера. Так и происходит в Opera, но не Google Chrome и Firefox. Может есть какая-то стандартизированная или неофициальная фича, которая не дает сессионным кукам удалиться?

Реклама в блоге
Apple

Apple

Да-да, ваши глаза вас не подводят. Это именно надкушенное яблоко.

The Lord of The Rings

The Piano Guys выпустили, наверное, один из лучших своих каверов. Как обычно красивые пейзажи (и как они умудряются таскать с собой рояль?) и великолепная музыка. Если вы еще не видели их — самое время это сделать.

The Piano Guys — Lord of the Rings

← СтаршеМоложе →