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

find 検索

471 - 480 / 1320    [|<]  [|<]  [<]  41  42  43  44  45  46  47  48  49  50   [>]  [>|][>|]
タイトル/名前 更新者 更新日
JavaScript/各種DOM操作におけるHTMLタグのエスケープメモ msakamoto-sf 2011-06-26 13:17:51
JavaScript/DOM based XSS msakamoto-sf 2011-06-26 13:13:30
日記/2011/06/26/jQueryとXSSの勉強(1) msakamoto-sf 2011-06-26 12:14:47
日記/2011/06/25/御茶ノ水駅にて。 msakamoto-sf 2011-06-25 19:08:14
技術/Android/HTTP通信でCookieを取り扱うには msakamoto-sf 2011-06-19 16:25:34
技術/Apache/mod_rewriteメモ(2):FollowSymLinks必須(となる場合がある) msakamoto-sf 2011-06-18 11:02:48
技術/Apache/WindowsバイナリでHTTPS msakamoto-sf 2011-06-11 22:53:58
技術/Android/SecureDevelopment msakamoto-sf 2011-06-11 16:31:24
技術/Windows/共有フォルダにアクセスしているのに認証ダイアログが表示されない msakamoto-sf 2011-06-11 16:07:57
PHP/PECL OAuth/HTTP Proxyを使う msakamoto-sf 2011-06-11 15:57:41
ソート項目 / ソート順     1ページ 件ずつ表示

JavaScript/各種DOM操作におけるHTMLタグのエスケープメモ  

所有者: msakamoto-sf    作成日: 2011-06-26 12:43:07
カテゴリ: HTML JavaScript 

日記/2011/06/26/jQueryとXSSの勉強(1)関連メモ。

JavaScriptのDOM操作で文字列をDOM要素として出力する方法について、HTMLタグをエスケープしてくれるか調べてみた。
HTMLタグが混ざっている文字列をDOMのText要素として出力するということは、それ自体が違和感がある。
HTMLタグを使っているのならば、それぞれのタグに応じた要素を一つずつ組み立てる必要があるのでは?
そうではなく、あくまでも「文字列」としてHTMLタグを出力したい時、どうなるか、という実験。

結果:

HTMLタグのエスケープ無し
  • HTML要素のinnerHTMLへの代入
HTMLタグのエスケープ有り
  • Text要素のnodeValueへの代入
  • document.createTextNode()
  • jQuery.text()

検証環境:

OS : Win7Pro SP1 32bit 日本語版
ブラウザ:
 Firefox 5.0
 Chrome 12.0.742.100
 IE 9.0.1

検証コード:

<html>
<head>
<title>jQuery XSS Test</title>
<script type="text/javascript" src="./jquery-1.6.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
function add_html_danger(msg)
{
    var p1 = document.getElementById("p1");
    p1.innerHTML = msg;
}
function add_html_safe1(msg)
{
    var p2 = document.getElementById("p2");
    p2.firstChild.nodeValue = msg;
}
function add_html_safe2(msg)
{
    var p2 = document.getElementById("p2");
    var t = document.createTextNode(msg);
    var c = p2.firstChild;
    p2.replaceChild(t, c);
}
function add_html_safe3(msg)
{
    $("#p2").text(msg);
}
</script>
 
<input type="button" value="innerHTML : danger" onClick="add_html_danger('<b>hello</b>');" /><br />
<input type="button" value="nodeValue : safe" onClick="add_html_safe1('<b>hello</b>');" /><br />
<input type="button" value="createTextNode and replaceChild : safe" onClick="add_html_safe2('<b>hello2</b>');" /><br />
<input type="button" value="jQuery.text() : safe" onClick="add_html_safe3('<b>hello3</b>');" /><br />
<hr />
result:<br />
<p id="p1">foobar</p>
<p id="p2">barbaz</p>
<hr />
<a href="#foo<b>bar</b>">hash!</a><br />
<hr />
after "hash!" link click:<br />
<input type="button" value="innerHTML : danger" onClick="add_html_danger(location.hash);" /><br />
</body>
</html>

innerTextは未検証。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-26 13:17:51
md5:8e0e49b7391f83eeecce8f6dffb14d06
sha1:17a6b490f346fc1bf55eb53b66102a6f18f474c6

JavaScript/DOM based XSS  

所有者: msakamoto-sf    作成日: 2011-06-26 13:07:50
カテゴリ: HTML JavaScript セキュリティ 

JavaScript/各種DOM操作におけるHTMLタグのエスケープメモを書いたそもそものきっかけが "DOM based XSS" ということで、リンクメモ。

url?name=<b>foo</b>

が太字表示 → 要チェック

url#name=<b>foo</b>

が太字表示 → 要チェック+サーバへのリクエストに"#"以降は含まれない!

url?link_href=javascript:alert()

どこかのリンク要素にそのまま出力 → 危険



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-26 13:13:30
md5:8a21c6b6355b3a239ec206592598ca8e
sha1:030ae9a33adbc659afdd73a3cd20fe4805706c7d

日記/2011/06/26/jQueryとXSSの勉強(1)  

所有者: msakamoto-sf    作成日: 2011-06-26 12:13:35
カテゴリ: HTML JavaScript セキュリティ 

実験してみた:

<html>
<head>
<title>jQuery XSS Test</title>
<script type="text/javascript" src="./jquery-1.6.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
function add_html(msg)
{
    $(msg).appendTo("body");
}
</script>
 
<input type="button" value="test1" onClick="add_html('<b>hello</b>');" /><br />
<a href="#foo<b>bar</b>">hash1</a><br />
<hr />
after "hash1" link click:<br />
<input type="button" value="test2" onClick="add_html(location.hash);" /><br />
<input type="button" value="test3" onClick="add_html(location.hash.substring(1));" /><br />
 
</body>
</html>

oops!


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-26 12:14:47
md5:447661b2db4acd5454c133b74efa0169
sha1:94b8c6741a893ff3ed1beb777cda5bcf04658f0c

日記/2011/06/25/御茶ノ水駅にて。  

所有者: msakamoto-sf    作成日: 2011-06-25 19:02:30
カテゴリ:

昨日の夜、会社から帰るとき、御茶ノ水駅で中央線豊田行の電車を見かけた。

御茶ノ水近くの某Webベンチャーでアルバイトをしていたのは2007-2008年にかけて。
あの頃は、毎日あの電車に乗って豊田まで帰っていた。

あれから4年近く経ち、今は反対側のホームで千葉/津田沼行の電車を待っている。

面白いなぁ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-25 19:08:14
md5:9404bc8fcffd3410abf534c6e0414eb8
sha1:6fcc837054e5d292febaa0454fca2a47998d1c4e

技術/Android/HTTP通信でCookieを取り扱うには  

所有者: msakamoto-sf    作成日: 2011-06-19 16:24:20
カテゴリ: Android 

2011年6月現在、AndroidでHTTP通信でよく使われるコンポーネントは次の三種類。

  • java.net パッケージのURLConnection系列(HttpURLConnection, HttpsURLConnection)
  • apache.http パッケージ(Apache HttpClient)
  • android.webkit.WebView コンポーネント

WebViewコンポーネントはCookieを自動的に処理してくれる。SQLite3のデータベースに、認証情報やForm入力値などと共に保存され永続化される。
本記事では残りの java.net, HttpClient でのCookieの取り扱いについて簡単にメモする。

Http(s)URLConnection 系でのCookieの取り扱い

JDKのCookie機能と同じ。CookieHandlerをベースとして、API Level 9以上であればデフォルト実装としてCookieManagerを利用出来る。

CookieHandler : JDK 1.5 以上, Android 1.0 (API Level 1) 以上
CookieManager : JDK 1.6 以上, Android 2.3 (API Level 9) 以上

CookieManagerではsecure属性もきちんと区別してくれる。
CookieHandlerについては上手くサンプルを動かせなかったため、secure属性の区別は未検証。

参考:

Apache HttpClient でのCookieの取り扱い

Apache HttpClientのTutorialドキュメント参照。

Androidに含まれているHttpClientのバージョンは 4.0.beta前後らしい。
プラットフォームの互換性維持のため、Apache側とはアップデートを同期出来ていない模様。

実際、 現在ログイン中のユーザーは、指定されたデータ(ID=981)にアクセスする権限がありません。 でも紹介しているようにApache側とインターフェイスにズレが生じている。

Http(s)URLConnection と HttpClient のどちらがオススメか?

個人的なオススメ:

  • 静的リソースの単純なGETアクセス : Http(s)URLConnection
  • それ以外のHTTP通信 : HttpClient
    • POSTメソッドを含むAPI呼び出しを頻繁に行うケース
    • CookieなどHTTPヘッダーに関連した処理を必要とするケース

HttpClientの方がHTTPを強く意識しているので、エンコード・デコード系のメソッドも充実しているしHTTPに素直に触れるような構成になっている。API呼び出しのように自分でパラメータを組み立てたり、HTTPヘッダーを細かく操作する場合はHttpClientをお薦めしたい。
逆にHttp(s)URLConnectionをお薦め出来る場面は、静的リソースを単純にGETするだけで 4xxや5xx系をまとめてエラーとして扱って良い場合に限定させてもらう。

とはいえ、これは個人的にHttp(s)URLConnectionに対して「良い思い出」が無いせいでもある。
今現在Http(s)URLConnectionでも用が足りているのであれば、強いてHttpClientに乗り換える理由は無い。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-19 16:25:34
md5:0dfe41e0dad93ec565097023ba495592
sha1:e29434d240b200f0005fad26b49fad6bc66db730

技術/Apache/mod_rewriteメモ(2):FollowSymLinks必須(となる場合がある)  

所有者: msakamoto-sf    作成日: 2011-06-18 10:57:53
カテゴリ: Apache 

久しぶりにhttpd.confとかmod_rewrite触っていたら思いっきりハマってしまったのでメモ。

mod_rewriteはFollowSymLinks必須。ただし、ディレクトリごとに有効・無効を切り替えたい場合。

下記の、比較的信頼性が高いと思われるドキュメントですら、これについてはわずか1-2行、しかもドキュメントの冒頭ではなく、中途半端に最後のほうであったり真ん中辺りなので、読み落とす可能性は高い。

ApacheHTTPDの公式ドキュメントでも最後の方に "Note: Enabling rewrites in per-directory context" として、太字ではあるが、さりげなく書いてあるだけ。もっと最初の方に書いておいて欲しいよなぁ・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-18 11:02:48
md5:3818e53c23cd4d99996fda85448a8515
sha1:2ea9837926bf2d7736f07afb4c6ebeb8bd824cff

技術/Apache/WindowsバイナリでHTTPS  

所有者: msakamoto-sf    作成日: 2011-06-11 22:53:22
カテゴリ: Apache 

WindowsバイナリでHTTPSを設定するメモ。

検証環境:

Windows 7 Professional SP1 32bit 日本語版
Apache/2.0.64 + mod_ssl, openssl

元ネタ:

1.OpenSSLに対応したWindows用のApache HTTPDサーバーのバイナリを入手。

最近ではApache HTTPDの本家サイトからmod_ssl + openssl 付きのWin32バイナリを入手できますので、それを使う。
あとは適宜インストールする。

2.証明書作成

詳しい解説は上記元ネタ、或いは適宜Webで検索。

openssl.exe : (Apache)\bin\openssl.exe
openssl.cnf : (Apache)\conf\openssl.cnf

Vista, Win7での注意点:以下のコマンドライン操作は、管理者として実行したコマンドプロンプト上で行う。

> cd ...(Apache)
> bin\openssl req -config conf\openssl.cnf -new -out localhost.csr
...
> bin\openssl rsa -in privkey.pem -out localhost.key
...
> bin\openssl x509 -in localhost.csr -out localhost.crt -req -signkey localhost.key -days 3650

以下のファイルが生成されているので、"conf\ssl" フォルダなどにまとめておく。

privkey.pem
localhost.csr
localhost.crt
localhost.key

もしVista, Win7上で「管理者として実行」ではない通常のコマンドプロンプト上で操作した場合は、次のフォルダ以下に生成される。

C:\Users\(ユーザー名)\AppData\Local\VirtualStore\Program Files\...

適宜削除してやり直すなり、そのまま本来のフォルダに移すなりする。

3.Apacheの設定

mod_ssl.soをLoadModuleする。

LoadModule ssl_module modules/mod_ssl.so

SSLCertificateFileとSSLCertificateKeyFileに適宜設定する。

SSLCertificateFile conf/ssl/localhost.crt
SSLCertificateKeyFile conf/ssl/localhost.key

あとは適当にhttpd.confやコマンドラインオプションを調整して動くようにすればOK。
"<IfDefine SSL>"とかでssl.confをまるごと囲ってる場合などは "-D SSL" をコマンドラインに混ぜておく。"<IfDefine SSL>"を外してしまえば "-D SSL" は不要。
Apacheも2.0と2.2系列とでは設定ファイルの構成が変わってきているので、その辺りの匙加減は適宜調整。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-11 22:53:58
md5:b6c482f0f983eb547525e45b4f0825ce
sha1:bcf0b9c723ba555b488395b575acdad9e8f5d797

技術/Android/SecureDevelopment  

所有者: msakamoto-sf    作成日: 2011-05-29 18:55:12
カテゴリ: Android 

Androidのセキュリティ機能や、安全なスマートフォンアプリ開発のための参考リンク集。

iSEC提供の解析系Androidアプリ:API Level 1前提のソースのzipで公開されているので、利用するにはAndroid SDKを導入してビルドする必要がある。

こんなのもあった。



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2011-06-11 16:31:24
md5:c79450a2e0b28685f05746e8a4ffae6e
sha1:4bb17bf371a37a3f1ce50d0f254737bf88499146

技術/Windows/共有フォルダにアクセスしているのに認証ダイアログが表示されない  

所有者: msakamoto-sf    作成日: 2011-06-11 15:59:49
カテゴリ: Windows プログラミング 

認証が必要な共有フォルダにアクセスしても、認証ダイアログが表示されず、アクセスエラーになってしまう場合についてメモ。

Windowsの認証の仕組みは大分忘れてしまっているので、かなり曖昧に書いてますが、とにかく上記のケースについて。
共有フォルダはWindows Serverでバージョンは2003だか2008だか、とりあえず新しめ。
そのファイルサーバーではドメインコントローラも動いてる?らしい。
他のWinXPでアクセスしたときは認証ダイアログが表示あれ、ドメイン名\ユーザー名 形式でアクセスできた。
ただしドメインには参加せず、みんなWORKGROUPワークグループで使ってる。
各PCのローカルアカウントは、ドメインのアカウントとは別にみんな好き勝手なユーザー名で設定してる。

で、Win7/64bitおよびXPModeから共有フォルダにアクセスしても認証ダイアログが表示されない。

原因がよく分からないのでとりあえず解決した手段をメモ。これが本来的に正しい解法なのかも不明。

他:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-11 16:07:57
md5:556107f87cc7c4a2a0ef780676345e8f
sha1:cac038ac4480e04d601d2923ba2a70a31b7371c4

PHP/PECL OAuth/HTTP Proxyを使う  

所有者: msakamoto-sf    作成日: 2011-06-11 15:50:34
カテゴリ: PHP 

PECL OAuth:

Windowsバイナリ:

PECL OAuthはcURLを使ってHTTP通信を行う。
そのため HTTP Proxy の設定もcURLのレイヤーが対象となる。

方法1:Cのソースを直接書き換え、cURLのProxy設定処理を追加する。
参考:

方法2:環境変数でcURLにHTTP Proxyを伝える。
参考:

どちらの方法を採るかはいつものようにケース・バイ・ケースで。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-06-11 15:57:41
md5:9aa233b4b2f620a825db358db1ef095b
sha1:3bde84fe63c09a29fa45e80d8646bcab9bca2b2c