вторник, 8 ноября 2011 г.
Теперь постом можно поделиться в социальных сетях
Я наконец-то добавил кнопки публикации информации про пост в социальных сетах. Пришлось немного порыться в интернетах, а то у меня используется нестандартный шаблон для блога и блогспот не мог к нему автоматически добавить эти кнопочки.
Теперь можно поставить +1 любому понравившемуся посту. Пользуемся, не стесняемся ;).
Mojlicious: Использование роутов в javascript
Мне нравится, как реализованы роуты в Mojolicious и особенно мне нравится то, что их можно именовать. Именую я роуты всегда в соответствии с именем контроллера и метода.
Например,
Например,
$r->get('/messages/:id')->to('messages#show')->name('messages_show'); $r->post('/messages/:id/delete')->to('messages#delete')->name('messages_delete');И затем в контроллере:
$self->redirect_to('messages_show', id =>123);Такой подход позволяет изменять роуты с меньшим влиянием на остальной код. И все бы хорошо, но часто приходится использовать роуты не только на стороне сервера, но и на стороне клиента. Например,
var some_id = 123; $.getJSON('/messages/' + some_id, function(data){ ... }); $.post('/messages/' + some_id + '/delete', function(data){ ... });Хотелось бы иметь возможность использовать имена роутов и на клиентской стороне. Для этой задачи и был написан плагин "Mojolicious::Plugin::JSUrlFor". Достаточно добавить в основной ваш лейаут:
<%= js_url_for %>и в клиентском javascript-е будет доступна функция "url_for"( аналогична хелперу "url_for" с "Mojolicious::Plugin::DefaultHelpers"):
var some_id = 123; $.getJSON( url_for('messages_show', {id:some_id}), function(data){ } ); $.post( url_for('messages_delete', {id:some_id}), function(data){ } );Модуль "Mojolicious::Plugin::JSUrlFor" пока еще только на Github, но заброшу на CPAN сразу, как покрою тестами.
Ярлыки:
Перл,
CPAN,
Mojolicious,
perl
вторник, 1 ноября 2011 г.
Mojolicious и защита от Cross Site Request Forgery (CSRF)
Немного теории
Я полагаю многие знают, что такое CSRF. Но для новичков озвучу. CSRF (Cross Site Request Forgery) - это межсайтовая подделка запросов. И происходит она следующим образом.Допустим, на вашем сайте, назовем его "mysite.com", есть ссылка, которая удаляет сообщение. Ссылка вида - "http://mysite.com/myprofile/delete?message=123".
Злоумышленник может вставить эту ссылку на свой сайт "attackerssite.com", например, в виде картинки -
<img src="http://mysite.com/delete?message=123" />И если Вы зайдете на "attackerssite.com", то будет отправлен запрос на загрузку картинки с вашего сайта, но вместо загрузки картинки будет удалено сообщение. Проблем с авторизацией не будет, так как будет отправлена ваша кука, запрос же отправляется с вашего браузера.
Таким образом возможно подделать абсолютно любой запрос.
Есть разные методы борьбы с этим, но реально работает только один - необходимо с каждым запросом, который изменяет данные, посылать секретную строку.
Эта строка должны быть уникальна для каждой сессии.
Ярлыки:
Перл,
CPAN,
Mojolicious,
perl
Подписаться на:
Сообщения (Atom)