タグ

ブックマーク / blog.64p.org (17)

  • Content-Security-Policy と nonce の話 - tokuhirom's blog

    Content-Security-Policy の nonce を利用すると、XSS の脅威をかなり軽減できます。 そこで、Web Application Framework ではデフォルトで対応したほうがよいのではないか、という旨を @hasegawayosuke さんから教えて頂いたので、実装について考えてみました。 とりあえず CSP の nonce はどういうものなのかを考慮するために、コード例を探していたのですが、実際に動くサンプルというものが nonce 関連のもので見当たりませんでした。 そこで、実際に動くサンプルを用意しました。 https://github.com/tokuhirom/csp-nonce-sample 以下は Sinatra で書かれたサンプルコードです。 require 'sinatra' require 'securerandom' get '/' d

  • Perl 初心者がウェブアプリケーションを書く時に気をつけるべきこと - tokuhirom's blog

    $c->req->param('id') みたいなメソッドは使ってはいけない。これは歴史的経緯から残っているものなので、基的に使わない方がいい。 $c->req->parameters->{id} をかわりに使ってください。 Perl の世界には List コンテキストというものがあって、これがウェブアプリケーションを開発するときには鬼門となります。 +{ id => $c->req->param('id') } のようなコードは、param メソッドはリストコンテキストではすべての id を返すので、 ?id=3&id=hasegawa&id=yosuke というようなクエリが来ている場合、 +{ id => 3, hasegawa => 'yosuke' } のようなデータ構造が作成される。これは明らかに意図していない挙動である。 以下の様にかくのがおすすめです。 my $id =

    hasegawayosuke
    hasegawayosuke 2014/09/11
    こういうデータを与える人は明らかに意図した挙動なのでは!
  • Hasegawa方式の CSRF対策を試してみた - tokuhirom's blog

    Amon2 での実装例です。 使用感としては、 実装はそれほどむずかしくないトークンの保存をサーバー側でやらなくていいので楽といったかんじ。 管理画面とかでつかってみたらよいかもしれぬ。 use strict; use warnings; use utf8; use File::Spec; use File::Basename; use lib File::Spec->catdir(dirname(__FILE__), 'extlib', 'lib', 'perl5'); use lib File::Spec->catdir(dirname(__FILE__), 'lib'); use Amon2::Lite; { package Amon2::Plugin::Web::Hsegawa; use constant { REDIRECT => 10001, VALIDATION_ERROR

    hasegawayosuke
    hasegawayosuke 2013/03/04
    やっぱり画面遷移まわりがめんどくさい感じ。
  • LTをはじめてやる君へ - tokuhirom's blog

    LT というのは メインのトークは大変なので、簡単に発表できる場をもうけよう5分なのですべっても大丈夫マイナーなネタをしゃべってもゆるされるようになんか一発ネタとかも発表できる場をもうけようなどの目的をもって設置されるものです。それほど気負う必要はないし、その日のうちに思いついてやったりする場合もあります(とくに海外では、飛び込みはあたりまえにあるといいます)。 ただ、一方で5分と話す時間がみじかくなっているので、話しなれていない場合には 自己紹介は手短にスライドの文字は大きくゆっくりしゃべるよく練習するの4点に気をつけましょう。 発表になれてない人ほど自己紹介を長くしがちですが、聴衆はあなたの生い立ちに興味はありません。名前、所属程度をいえば十分です。発表が、あなたのバックグラウンドをしらないと伝わらないものならば、かるく説明する必要はありますが、それでも30秒程度におさめる方がいいでし

    hasegawayosuke
    hasegawayosuke 2012/09/04
    「異常にはやくちに喋る人もいますが、あれはああいう芸風です。」ほっとけw
  • 電子書籍における内外格差について - tokuhirom's blog

    最近は電子書籍について語る前に、とりあえず Kindle を買うべし(Fire 以外)ということを最近つよくおもう。 iPad や、その他のタブレットと Kindle ではだいぶえられる体験がちがう。 K3G 回線に対応してないとはいえ、家で wi-fi につなげば、かなり良好な体験がえられる。電子書籍amazon.com で購入したら、wi-fi 経由でダウンロードされて超便利である。 Kindle は e-ink なので電池の持ちもいいし、非常にかるいので、旅行にいく際などに「荷物にいれるかどうか」を悩む必要がそもそもない。僕は常時鞄に Kindle をいれている。ごくたまに充電すればいいので非常に便利である。 Kindle をつかってると PDF とか糞! ってなるという体験もえられる。書籍のサイズでつくられた PDF は、たいがい Kindle だとよみづらい。読者のデバイスの

    hasegawayosuke
    hasegawayosuke 2012/01/05
    ステルスマーケティング
  • Amon2とJSONとセキュリティ - tokuhirom's blog

    [1]http://d.hatena.ne.jp/ockeghem/20110907/p1[2]http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05a.html[3] http://msdn.microsoft.com/ja-jp/asp.net/ff713315[4] http://labs.cybozu.co.jp/blog/kazuho/archives/2007/01/cross-site_including.phpあたりをよんで、JSON とセキュリティについてかんがえてみた。 ここで、有効とされている対策のうち while(1); を先頭に付与するPOST ですべて処理するといったあたりは、RESTful でないし、BK 感がひどいというか質的ではないのでできるだけやりたくない。 また、Amon2 では互換

    hasegawayosuke
    hasegawayosuke 2011/11/25
    JSON対策みたいなbkは普通の開発者が知る必要ないので、こうやってWAFに取り込まれるのが望ましい。tokuhirom++
  • Perl5 においてファイルからの読取る場合における Malformed UTF-8 問題 - tokuhirom's blog

    Perl::Critic が最近 PerlIO layer に :utf8 つかうと怒ってくるけど、べらんめえしったことか! とおもっていたら、サイトが表示できなくなった(このような問題を hasegawayosuke 現象と我々はよんでいる)ので、ちゃんと調べた。 https://metacpan.org/module/Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer 以下のようなスクリプトを実行する。 #!/usr/bin/perl use strict; use warnings; use utf8; use 5.010000; use autodie ':all'; use Devel::Peek; { open my $ofh, '>', 'foo.txt'; print $ofh "\xC0\xAF"

    hasegawayosuke
    hasegawayosuke 2011/11/02
    言ってることがよくわからない
  • tokuhirom blog

    インストール今回は Amon2 の最新版が必要なので、すでにインストールしている場合でもあらためてインストールしてください。 環境は OSX, linux を想定していますが、Windowsでもそれほどかわらないかと思います。Windows でやっていてわからなかったら mattn さんにきいてください。 さて、Amon2 のインストールは非常に容易です。Amon2はCPANにリリースされていますから、通常のCPANモジュールと同様にcpanmコマンドでインストールできます。 % curl -L http://cpanmin.us | perl - Amon2 Amon2::DBIで、インストールが完了します。テストに失敗する場合には、コメント欄などできいてください。 TinyURLを作るぐだぐだとかたっていても何もつたわらないと思うので、チュートリアルに入りましょう。 とりあえず、簡単で

    tokuhirom blog
    hasegawayosuke
    hasegawayosuke 2011/07/15
    data: とか file: とかの短縮URLも作れて便利!
  • Plack-0.9945 で任意の CGI スクリプトを実行可能になっていた件 - tokuhirom's blog

    http://search.cpan.org/~miyagawa/Plack-0.9945/ これまで Plack には Plack::App::CGIBin というモジュールが付属していたが、これは Perl script の実行しかサポートしていなかった。 しかし、Plack 0.9945 をつかと、任意の CGI script を実行可能となっている。 plackup -MPlack::App::CGIBin -e 'Plack::App::CGIBin->new(root => "./")->to_app' -p 9099 などとすると、 #!/usr/bin/python # -*- coding: utf-8 -*- print "Content-Type: text/plain" print print "hello world." のような、普通の cgi スクリプトを実行

    hasegawayosuke
    hasegawayosuke 2010/08/20
    タイトルだけみて、Plackにどでかい穴が開いてたとかそういう話かと思ったら全然違った。
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2009/12/26
    普段お世話になっているPerl mongersのみなさんに対して少しでも協力できたのなら嬉しいです。
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2009/09/24
    あざっす! // windowsだとどうなんだろう
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2009/05/26
    次回予告。動的に適当なパッチをあてるモジュールに動的にパッチをあてるモジュールに動的にパッチをあてる方法。
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2009/05/25
    59 get 出版オメ
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2009/05/05
    tokuhiromさんは本当に素敵なレディですね。
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2009/02/02
    「奇人変人ぶった振舞いをもってトラフィックをあつめるとか、そういうのは、自分のためにならないでしょう。」id:TKSKは100回くらい音読したほうがよい。
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hasegawayosuke
    hasegawayosuke 2008/09/03
    すげー。
  • 1