タグ

ブックマーク / teppeis.hatenablog.com (6)

  • 3分で分かるAngularJSセキュリティ - teppeis blog

    先日のng-mtg#4 AngularJS 勉強会でLTしようと思ったけど申し込みが間に合わなかったのでブログに書きます。 先月リリースされたAngularJS 1.2はセキュリティがんばってる的なことを聞いたので、セキュリティ周りの仕組みを調べてみました。 お題は以下です。 CSRF JSON CSP (Content Security Policy) Escaping CSRF ユニークなトークンをHTTPリクエストに載せてサーバーでチェックする対応が世の中では主流(最近はカスタムヘッダのチェックによる対策も) AngularJSでは、XSRF-TOKEN Cookieにトークンが載っていると、$httpを使ったHTTPリクエストのヘッダに自動的にX-XSRF-TOKENヘッダーが付く。 XSRF-TOKEN CookieはもちろんNot HttpOnlyで。 Angular界ではCS

    3分で分かるAngularJSセキュリティ - teppeis blog
  • TypeScriptで複数ファイル構成する2つの方法 - teppeis blog

    TypeScriptで複数ファイル構成のプロジェクトを扱う方法について書いてみる。日語の入門記事や試してみました系の記事で勘違いされてることがたまに見受けられるので、整理してみる。 公式のModules in TypeScriptを既に読んでおられるような御仁は回れ右していただいても結構です。 やりたいこと ソースファイルをモジュールごとに分割して管理したい 実行環境はNode.js or ブラウザ 例えば、こういう処理があって、 // main.ts function trimLeft(str: string): string { return str.replace(/^\s+/, ''); } var input = document.getElementsByTagName('input')[0]; input.value = trimLeft(input.value); tri

    TypeScriptで複数ファイル構成する2つの方法 - teppeis blog
    oinume
    oinume 2014/05/22
    細かく説明されてる。ちょうど昨日 export = trimLeft のところでつまずいたのでもっと早く読みたかった...!
  • タスクを並列超速化するgrunt-parallelizeを紹介するよ - teppeis blog

    この記事は Grunt Plugins Advent Calendar 2013 23日目の記事です。 Gruntタスクを並列で実行するプラグイン grunt-parallelize を紹介します。 ある程度プロジェクトが大きくなるとJavaScriptが1500ファイルとか超えてきてJSHintにくっそ時間かかるみたいなことがよくあります。JSHintを含む多くのNode製ツールはシングルプロセスなので、普通に実行しちゃうとマルチコアなCPUが遊んでてもったいないわけです。 そんなときにgrunt-parallelizeを使うと、指定のプロセス数にファイルリストを分割してマルチプロセスでタスクを実行してくれます。 まずはもとになるタスクのGruntfile.jsの定義。grunt-contrib-jshintを使った普通のタスクですね。 grunt.initConfig({ jshint

    タスクを並列超速化するgrunt-parallelizeを紹介するよ - teppeis blog
    oinume
    oinume 2014/05/15
  • grunt-contrib-jshint 0.6.4で.jshintrcにコメントが書けるようになったよ - teppeis blog

    家のJSHintでは、.jshintrcのなかでこんな感じでコメントが書けるんですけど、 { // Enforcing "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.) "camelcase" : false, // true: Identifiers must be in camelCase "curly" : true, // true: Require {} for every new block or scope "eqeqeq" : true // true: Require triple equals (===) for comparison } grunt-contrib-jshintではvalidなJSONしか認められてなくて、コメントが書けませんでした。 のでプルリク送ったら即マー

    grunt-contrib-jshint 0.6.4で.jshintrcにコメントが書けるようになったよ - teppeis blog
    oinume
    oinume 2013/09/03
  • Re: RequireJSを使うのを止めた理由 - teppeis blog

    RequireJSを使うのを止めた理由 | それなりブログ を読んで、ほぼ同意だったのですが、意識が高まったのでいくつかコメントを。 嫌だったところ 基的に、1枚のJSファイルが1モジュール、ファイル名がコードに影響する。 それができるのが良いところだと思ってました。 それもあって、結合・圧縮は r.js という専用のツールが必要になる。Grunt の concat とか uglify とか使えない。 リリース版ではビルドがほぼ必須というのがRequireJSの欠点ですね。 ただGruntについては、grunt-contrib-requirejsを使えばデフォルトでuglifyされますし、concatなど他のGruntタスクと組み合わせることも可能です。 AMD の仕様では、「JSファイルのリストを順番通りに読み込み/実行する」ということができない。実際何が困ったかというと、分割した m

    Re: RequireJSを使うのを止めた理由 - teppeis blog
  • Closure Templatesのオートエスケープが最強すぎる件 - teppeis blog

    rails3以降のWEBアプリケーションにありがちなXSS - hanagemanの日記ではない この記事を読んで、ちょうど最近使っているGoogle Closure Templatesがいい感じだったので紹介します。 コンテキストが異なる/重なるポイントでのエスケープ問題 最近のほとんどのテンプレートエンジンでは、変数埋め込みをデフォルトでHTMLエスケープしてくれます。が、元記事で指摘されているように、それでは正しくないケースがあります。HTML PCDATA以外のコンテキストで文字列を生成したり、複数のコンテキストが重なっている箇所です。 極端な例としてはこんな感じです。 <a href="{$x1}" onclick="alert('{$x2}')">{$x3}</a> <script> var x = '{$x4}'; var y = {$x5}; </script> <styl

    Closure Templatesのオートエスケープが最強すぎる件 - teppeis blog
    oinume
    oinume 2012/04/18
    すごい
  • 1