home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

231 - 240 / 1320    [|<]  [|<]  [<]  21  22  23  24  25  26  27  28  29  30   [>]  [>|][>|]
タイトル/名前 更新者 更新日
読書メモ/「めんどうくさいWebセキュリティ」 msakamoto-sf 2013-10-13 19:39:23
技術/vim/メモ1 msakamoto-sf 2013-10-06 11:11:41
技術/Linux/free msakamoto-sf 2013-10-06 11:05:43
技術/vim/メモ7, HTML作成補助系, emmet-vim, surround.vim msakamoto-sf 2013-09-01 17:11:09
JavaScript/Node.js msakamoto-sf 2013-09-01 17:04:21
技術/vim/メモ8, JavaScriptコーディング環境 msakamoto-sf 2013-09-01 17:03:05
技術/Linux/Ubuntu/12.04/Server msakamoto-sf 2013-09-01 12:51:41
日記/2013/08/30/割りとどうでもよい疑問 msakamoto-sf 2013-08-30 07:55:17
技術/MacOSX/10.8でApache + PHPメモ msakamoto-sf 2013-08-17 14:09:56
技術/MacOSX/シェルスクリプトを".app"("Bundle")化する msakamoto-sf 2013-08-17 14:05:21
ソート項目 / ソート順     1ページ 件ずつ表示

読書メモ/「めんどうくさいWebセキュリティ」  

所有者: msakamoto-sf    作成日: 2013-10-13 19:35:24
カテゴリ: HTTP Web セキュリティ 読書 

邦題:「めんどうくさいWebセキュリティ」(原著:"The Tangled Web: A Guide to Securing Modern Web Applications")

付箋挟んだ箇所のメモ書き。


以下、付箋メモ:

p37, 「もう一度、すべてをひとつに」の"NOTE"
"Internet ExplorerはURL中の任意の箇所でスラッシュの代わりにバックスラッシュ(\)を使用することができます。"
∑(゚Д゚) うそ~ん

p59, 「HTTP/0.9をサポートし続けていると……」
本文中の例だと、ブラウザは http://example.com:25/ とかに誘導されたのか?実際にローカルで実験用のSMTPサーバを立ちあげてアクセスしてみたところ、確かにSMTPサーバからのエラー文字列がブラウザ上に表示された。ただし、使用したSMTPサーバ( http://nilhcem.github.io/FakeSMTP/ )の仕様か、受け付けたコマンド文字列はエコーバックせず、エラーメッセージのみが表示された。

SMTPはあくまでも例であり、テキストベースのプロトコルを用いたサービス全般に対して、HTTP/0.9をサポートするUserAgentには同様の問題があると考えるべきか。

p59, 「改行文字の扱いにまつわる微妙な問題」

Set-Cookie: abc=[CR][CR]<html><body><h1>Hi[CR][LF]

→これ、適当なカスタムヘッダで試してみたけど、IE10で修正されたのか、ちゃんとCRCR以降は読み捨てされ、その後ろのHTMLコンテンツが表示されることは無かった。(F12による開発者コンソールで確認)
実験用ダミーサーバスクリプト(groovy):

char cr = 0x0d;
char lf = 0x0a;
StringBuilder sb = new StringBuilder();
sb.append(cr);
sb.append(lf);
String crlf = sb.toString();
sb = new StringBuilder();
sb.append(cr);
sb.append(cr);
String crcr = sb.toString();

def server = new ServerSocket(5000);
while(true) {
    server.accept() { socket ->
        socket.withStreams { input, output ->
            // ignore input and just serve dummy content
            output.withWriter { writer ->
                writer << "HTTP/1.1 200 OK" + crlf;
                writer << "Content-Type: text/html" + crlf;
                writer << "X-Custom-Header1: abc=def" + crcr + "hellohello<html><body><h1>Hi</h1></body>" + crlf;
                writer << "Pragma: nocache" + crlf + crlf;
                writer << "<html><body>Hello World! It's ${new Date()}</body></html>";
            }
        }
    }
}

64p, 「セミコロンで区切られたヘッダの値」
66p, 「ヘッダの文字セットとエンコーディングスキーム」
この辺は、アップロードされたファイルを、任意のファイル名でダウンロードするようなWebサイトを作った経験がある人なら大いに参考になりそう。「日本語ファイル名の扱い」という地雷もあるし、ブラウザのサポート状況などかなり悩ましい問題。"Content-Disposition"を扱う時はこのあたりを一読しておいて損はない。

68p, 「Refererヘッダの振る舞い」
Refererヘッダが含まれないのはどんな時か、というのが端的にまとめられているので、サーバ側でRefererヘッダを何かしらの処理に使う時は、一度さっと目を通しておくと良いかも。

79p,「キャッシュの振る舞い」
セキュリティを考慮する必要のない静的なコンテンツについてキャッシュさせたい、あるいは逆に、センシティブな情報を動的に出力するプログラムでキャッシュを無効化したい、などの場合に一読しておくと良いかも。また企業ネットワークで使う想定の場合、途中のProxyでのキャッシュも想定すると、HTTPSにするとかも必要かも。「スターバックスでPCを使ったあとには、ブラウザキャッシュを削除しておくというのは非常によい考え」・・・昨今ならスマホのブラウザのキャッシュも該当するかも?

81p,「HTTPクッキーのセマンティクス」
"HTTP仕様ではクッキー値はquoted-string形式を使用するものと述べられている(~)のに対して、この構文を実際に識別するのがFirefoxとOperaだけである点があります。"
う~ん・・・以下のスクリプトでFirefox 24.0 / IE 10.0 で試してみたが、いずれも引用符(0x22)含みのCookie、ちゃんと引用符として扱ってくれて、FFとIEで引用符の認識で差が出てるようには見えなかった・・・。ひとまず、スペース(0x20)含ませてみたところ、そこで終わりにせずちゃんとスペースの後ろまで値として認識してくれたのが面白かった(FF/IE共)。

def server = new ServerSocket(5000);
while(true) {
    server.accept() { socket ->
        socket.withStreams { input, output ->
            // ignore input and just serve dummy content
            output.withWriter { writer ->
                writer << "HTTP/1.1 200 OK\r\n";
                writer << "Content-Type: text/html\r\n";
                writer << "Set-Cookie: foo1=include space1\r\n";
                writer << "Set-Cookie: foo2=\"include space2\"\r\n";
                writer << "Set-Cookie: abc=\"12 3\\\"45 6\"\r\n";
                writer << "Set-Cookie: def=ABC\"DEF\r\n";
                writer << "\r\n";
                writer << "<html><body>Hello World! It's ${new Date()}";
                writer << "<script>alert(document.cookie);</script>\r\n";
                writer << "</body></html>";
            }
        }
    }
}

86p,「HTTP認証」
「~そのスレッドを閲覧しているユーザーには、いきなりよくわからないパスワード要求画面が表示されます。~」
こ、こえ~

91p,「セキュリティエンジニアリングチェック表」
→Content-DispositionヘッダーとSet-Cookieのセクションは読んでおいて損はない。

100p,「HTMLパーサーの振る舞いを理解する」
「おおっ!?」ってなったのが、

<img ... title=""onerror="alert(1)">

に続く、

<img ... title=``onerror=`alert(1)`>

の例。バッククォートも認識されるらしい。
・・・が、IE10で試してみたところ、以下のエラーが開発者ツールのコンソールに表示され、alert()は動作しなかった。
「HTML1410: 引用符で囲まれていない属性値が無効です。引用符で囲まれていない属性値に (")、(')、(<)、(=)、または (`) を含めることはできません。 」

IEの場合の等号("=")処理も驚き。

<img src=test.jpg?value=">Yes, we are still inside a tag!">

・・・だが、これもIE10で試したところ、互換モードを色々いじってみても">Yes, we are..."はちゃんとタグの外になり、属性としては認識されていない。

103p,「エンティティエンコーディング」(Entity Encoding)
HTMLの属性内でのEntityEncodingを行う場合は、ここのセクションに目を通しておく必要がありそう。
またXHTMLを使う場合はさらに注意が必要。

120p,「@ディレクティブとXBLバインディング」
FirefoxではXBLというのがあるんだ・・・。

144p,「標準オブジェクト階層」
「location.*データを使用して、新規に文字列(特にHTMLもしくはJavaScriptコード)を構築する際には、何らかの方法でこれがエスケープされていると仮定することは危険なので注意してください。」

151p,「スクリプトの文字エンコーディング」
「エスケープコードは識別子のなかでのみ使用可能であり、構文に影響をおよぼす記号を置き換えても動作はしません。」

\u0061lert("...");

→XSSを防ぐために、入り口でBlackList的に"alert"などの識別子をフィルタリングorブロックしようとすると、この仕様により簡単にすり抜けてしまう。

158p,「プレーンテキストファイル」
「JavaScriptの正式なMIMEタイプはapplication/javascriptです。これはRFC4329で規定されています。」
・・・ホンマや・・・。ってか、"application/ecmascript"(拡張子 ".es")というのもあるのか・・・。

192p,「document.domain」
えっ、document.domain って上書き出来るの!?
ただし、お互いに通信しようとする双方で合わせる必要があるらしい。

195p,「ブラウザの認証情報とのやり取り」
・・ここの、CSRFでログインさせ、「自傷行為」と呼ばれるXSS脆弱性を悪用するシナリオが、よく理解できません・・・。どこでどうSOPの同期状態が関連するのか?

196p,「XMLHttpRequestにおける同一生成元ポリシー」
XMLHttpRequestのsetRequestHeader()で設定できるヘッダと、BlackList対策について。

201p, 「クッキーのセキュリティポリシー」

Cookieのpath属性があてにならない「こともある」という表現が使われているが、path属性はあくまでもCookieの有効範囲でしか影響せず、JavaScriptのSOPはpath制限なんて無いためそちらで自由に触られる、という話か?path属性を指定していても役に立たない、具体的なケースがイメージ出来ない・・・。path属性の制限がブラウザによりぶっ壊れてる、とかなら分かりやすいのだけれど、JS側のSOPとの食い違いでどんな影響が出るのかが分からない。"http://asp.example.com/fooCompnay/" と "http://asp.example.com/barCompany/" とで、Cookieはpath属性で分離されてても、JSでのXHRなどは素通しされてしまう、というようなことを言っているのだろうか?

secure属性についても言及有り。HTTPとHTTPSで、同じ名前のCookieをsecure属性無し/有りで管理すると混乱しそう。

211p,「ポリシーフィアルとスニッフィングのリスク」

Adobeのcrossdomain.xml、およびMicrosoft Silverlightでの注意点について。

228p,「javascript:URLとvbscript:URLにおける継承」
いわゆる「ブックマークレット」で、アドレスバーでjavascript:スキームに遷移すると、遷移前のドキュメントのSOPでJavaScriptが動作しますが、それの危険性について。
遷移の方法によって、さらにブラウザによって、拒否したりSOPの継承もとが変化したりと複雑。

236p,「フレームハイジャック」
生成元とフレームの遷移に関する、鬱になるようなややこしい話題。ちなみに、ここではあくまでもフレーム間の遷移アクションについての解説になっており、「クリックジャッキング」については 240p からの「不要なフレーム表示」で解説されてる。

243p,「ドメインを超えたコンテンツのインクルード」
CSS構文解析でのフォールトトレランス性の高さに起因する、クロスドメインでCSSを読み込んだ場合に発生しうる重要情報の漏えいについて。
→ちょっとわかりづらかったので、解説されてるシナリオを噛み砕くとこういう状況で合ってるか?
1. サイトAでは、ログインしているユーザに紐づく重要情報を表示するページA-1があり、そこにはユーザが入力された文字列が表示される箇所がある。特にこのシナリオでは、URLパラメータに渡された文字列がレスポンスHTML中に出力される。
2. 上記ページA-1では、URLパラメータに渡す文字列を工夫することで、CSSとして誤って解釈した場合に、"background-image" のURLとして重要情報が含まれてしまうような挙動をしてしまう。
3. サイトBは攻撃者が用意した罠サイトで、サイトAのページA-1をわざとCSSとしてインクルードするようになっている。この時、2.で説明したようにして、"background-image" のURLで攻撃者のサイトを引っ張ってくるようにしておく。これにより、"background-image"のリソースをブラウザがロードする際に、攻撃者のサイト上のURLにアクセスすることになるが、URLの後ろにCSSとして誤って解釈された、重要情報のHTMLソースが付加されてしまう。
4. 攻撃者はサイトBに、被害者のブラウザを誘導する。
5. 被害者のブラウザが既にサイトAでログイン済みだった場合、CSSとしてページA-1を読み込む。「被害者に紐づく」重要情報が出力されたページA-1は、攻撃者が埋め込んでおいたURLパラメータにより誤ってCSSとして解釈され、"background-image" のURLをロードする際に、被害者に紐付いた重要情報をURLに付加して、攻撃者のサーバにリクエストを送信する。
6. 攻撃者は被害者の重要情報を不正に入手する。

268p, 「Content-Typeの特殊な値」
今度、ファイルを添付ファイルとしてDLさせるWebアプリを作る場合、今度は "application/octet-stream" ではなくて、"application/binary" を使おう・・・。
また、PATH_INFOによるコンテンツの誤認識にも注意。

292p,「ポップアップフィルタ」
最近は目にすること少なくなった・・・と思うんですが、なんかFacebookとかGoogleのOAuth認証使うサイトでたまに見たりします。
大分制限が加えられているようですが、この辺を扱う際は、ここを読んでおくと良さそうです。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-10-13 19:39:23
md5:03b3ee7847498a8c0cfbf21f8dab3a87
sha1:a53ab1080187c5a55fe830b8a54d5691d586af8d

技術/vim/メモ1  

所有者: msakamoto-sf    作成日: 2008-12-16 23:40:38
カテゴリ:

基本:「名無しのvim使い」を見ておきたい。
http://nanasi.jp/


文字コード・改行コードの変更

「vimエディタで「文字コード、改行コードを変更して保存する。」」からの抜粋:

・文字コードの変更

:set fileencoding=文字コード
:set fenc=文字コード (上のコマンドの短い形式。こちらでも良い。)
:set fileencoding=euc-jp (エンコーディングEUC-JPに変更。)
:set fileencoding=shift_jis (エンコーディングSHIFT_JISに変更。)
:set fileencoding=utf-8 (エンコーディングUTF-8に変更。)

・ファイルフォーマットの種類の変更

:set fileformat=ファイルフォーマットの種類
:set ff=ファイルフォーマットの種類 (上のコマンドの短い形式。こちらでも良い。)
:set fileformat=dos (改行をWindowsの形式に変更。)
:set fileformat=mac (改行をMacの形式に変更。)
:set fileformat=unix (改行をUnixの形式に変更。)

・ファイルが文字化けしている場合のエンコーディングの修正の手順

:e ++enc=utf-8 ... まず、ファイルを文字化けしない、正しいエンコーディングで開き直します。
:set fileencoding=euc-jp ... 変更したいファイルのエンコーディングをセットします。
:w ... 最後にファイルの保存を行います。

バッファの一覧とバッファの消去

基本:「vimエディタ・スターターマニュアル #6 (複数のバッファの管理)」
http://nanasi.jp/articles/howto/user-manual/user-manual-buffer.html

・バッファ一覧

:ls

・バッファ一覧で確認出来たバッファ番号を使って、バッファを切替

:b バッファ番号

・非表示のバッファも含めて全て表示する。

:buffers!

・バッファを完全に解放する。

:bwipe

ビジュアルに選択

・大文字V → 複数行選択開始
・小文字v → 通常のビジュアル選択開始

以下はvimオンリー
・C-v → ビジュアルな矩形選択開始

vimrc中で、OSを判別したい。

分かりづらいのが Cygwin の判定。

has "win32unix"

らしい。



プレーンテキスト形式でダウンロード
現在のバージョン : 4
更新者: msakamoto-sf
更新日: 2013-10-06 11:11:41
md5:11b8eb7ead9c04faeb34091678054a70
sha1:922f51d5cd57f09dd2cd146915209f76ab566dd4

技術/Linux/free  

所有者: msakamoto-sf    作成日: 2013-10-06 11:05:25
カテゴリ: Linux 

freeの読み方、なかなか覚えられないのでメモ。

$ free
             total       used       free     shared    buffers     cached
Mem:       2051652    1939328     112324          0      60668    1638896
-/+ buffers/cache:     239764    1811888
Swap:      2093052          0    2093052
  • "used" : "total" - "free"
  • "free" : 何の用途にも使ってない領域
  • "shared" : 無視して良い。
  • "buffers" : ファイルなどのメタデータのキャッシュ
  • "cached" : ファイルのデータ本体のキャッシュ
  • "-/+ buffers/cache:"
    • "used - (buffers and cache)" : 使用されなくなったら回収可能なバッファとキャッシュを"used"から差っ引いた、確実に使用されているメモリ。
    • "free + (buffers and cache)" : 使用されなくなったら回収可能なバッファとキャッシュを"free"に加えた、使おうと思えば使うことが出来る空きメモリ量。

スゴイ分かりやすい解説:

  • Linuxトラブルシューティング探偵団 番外編(1):減り続けるメモリ残量! 果たしてその原因は!? (2/3) - @IT


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-10-06 11:05:43
md5:71b670000b6b4b36afbf60ad769ea6cf
sha1:7c925980e5de9c85c48abd1360ccf94005029400

技術/vim/メモ7, HTML作成補助系, emmet-vim, surround.vim  

所有者: msakamoto-sf    作成日: 2013-03-30 22:08:55
カテゴリ:

2013-09-01追記
"mattn/zencoding-vim"は、"mattn/emmet-vim" に移動しました。

リンクだけメモ:

surround.vim

zencoding-vim



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2013-09-01 17:11:09
md5:7d303d71b3aa8ecb86867b4fd1f3954a
sha1:bf6de3d30b40b66b4c0098ae71ec1748e21eb2df

JavaScript/Node.js  

所有者: msakamoto-sf    作成日: 2013-09-01 16:44:19
カテゴリ: JavaScript Node.js 

日記より:

インストール

2013-09現在はLinux/Mac + nvmの組み合わせが無難そう。

Ubuntu 12.04 LTSへのインストール(bash推奨)

  1. "build-essential", "libssl-dev", "curl", "wget"をインストールしておく。
  2. "git clone git://github.com/creationix/nvm.git ~/.nvm"
  3. "source ~/.nvm/nvm.sh"

参考:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-09-01 17:04:21
md5:fac135ee4e7455e742f96c7c155b80c1
sha1:81addbef54316810dc55a15355e727662e712e9a

技術/vim/メモ8, JavaScriptコーディング環境  

所有者: msakamoto-sf    作成日: 2013-09-01 16:50:53
カテゴリ: JavaScript Node.js 

2013-09現在

  • JavaScript-syntax : シンタックスハイライト
  • pangloss/vim-javascript : インデント
  • basyura/jslint.js : JSLint
    • "basyura/jslint.vm"ではNode.jsも使える。
    • Ubuntu 12.04 LTSでのnvm + Node.jsインストール方法は JavaScript/Node.js 参照。
    • なお、masterの 3587db819d2a9b1f58776edf5e8e76a07cee067c (2013-07) では、"lib/runjslint.js" に "print(...)" というのがありnode.js(v0.11.6)ではエラーになったのでconsole.log()にローカルで修正した。

参考:

JSLint参考:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-09-01 17:03:05
md5:c2ea697218ee415bf9a3433d02a4fba5
sha1:d7b55b5687e2af5f4e1e340bcfbbbb0156315679

技術/Linux/Ubuntu/12.04/Server  

所有者: msakamoto-sf    作成日: 2013-01-06 14:24:49
カテゴリ: Linux Ubuntu 
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2013-09-01 12:51:41
md5:6e2dfea3d99c1c4916a75cf383aedaa1
sha1:36e22c93d1b1a11d50638c98cdc16d23109ec7cf

日記/2013/08/30/割りとどうでもよい疑問  

所有者: msakamoto-sf    作成日: 2013-08-30 07:52:19
カテゴリ:

・水はH2Oだけど、その液体中ではなんで H- と O+ に分離しないんだ?分離する・しないの基準ってなんだったけ・・・
・水がH2Oであることを推測し、検証したのって誰?
・ってか、分子・原子のモデルって誰がどうやって構築して、検証したんだっけ?
・なんで陽子・電子・中性子と、物質の話に電気の話が混ざってくるんだ?
など。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-08-30 07:55:17
md5:5ccb555b5b343a6611f0e617e2fbaec5
sha1:cf7ff201782758a81ead316064a7163335254ece

技術/MacOSX/10.8でApache + PHPメモ  

所有者: msakamoto-sf    作成日: 2013-08-17 14:05:29
カテゴリ: Apache Apple PHP 

10.7では、環境設定から "Web共有" というのでApacheの起動・停止を制御出来たのですが、10.8になり削除された模様。
ただし、Apache2 + PHP自体は入っているため、apachectlでコマンドラインで起動・停止出来る。
設定ファイルの場所は /etc/apache2/ 以下。
php.iniについてはデフォルトは /etc/php.ini だが、10.8 のインストール直後は php.ini.default しか無いので、コピー&カスタマイズで /etc/php.ini にすればOK。

参考



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-08-17 14:09:56
md5:15b20ea68e90b12703ad8bc12200ba6c
sha1:3f75f385899c93f47c79c52a55ee1cecaf4c2144

技術/MacOSX/シェルスクリプトを".app"("Bundle")化する  

所有者: msakamoto-sf    作成日: 2013-07-06 23:49:43
カテゴリ: Apple Eclipse Java シェルスクリプト 

Javaアプリで、"java -jar xxxx.jar"だけで動くようなアプリの場合、Mac OS XのLaunchPadやSpotlightなどのランチャーアプリから検索して実行するのに支障があります。それに限らず、シェルスクリプトを介して実行したかったり、諸事情で"xxxx.app"の中身の構成を若干調整したい場合の参考資料などを勉強がてらまとめました。

環境 : Mac OS X 10.8.4
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-08-17 14:05:21
md5:b8a2e412c15d9a46f46a233bf1737dc6
sha1:938908f16a7e0ce04e158ee2a733b6dc35318666