2012年12月10日月曜日

[tomcat]起動時にUnsupportedEncodingException cp932と言われたら

Clip to Evernote
tomcatの起動時に、
UnsupportedEncodingException cp932って出てきたので、
ググって調べてみた。

どうやら、windowsのインストーラー版だと
XMLの文字コードがShift-JISだったり、
XML宣言のencodingがutf-8じゃなかったりするので
その辺を直してやると起動デキました。

無事解決。

参考URL
Tomcat,UnsupportedEncodingExceptionとかで起動しない
http://d.hatena.ne.jp/gnarl/20080805/1217900224

egacreate UnsupportedEncodingException: cp932
http://egacreate.blogspot.jp/2009/03/unsupportedencodingexception-cp932.html

2012年12月4日火曜日

[セキュリティ]一部のリクエストヘッダを書き換えるとブラウザエラーになる

Clip to Evernote
脆弱性の調査をしている時に、リクエストヘッダのHOSTヘッダは書き換えられるのか?という話になり、その時に調べた内容のまとめを書いてきます。

■調査内容

JavaScriptでリクエストヘッダの書き換えは可能なのか?

■対象

Android標準ブラウザ
iPhone iOS5 Safari
PC Chrome
PC Safari

■結果

一部のリクエストヘッダの書き換えは、ブラウザ側でエラーとなる。

■調査詳細

まず、JavaScriptを書いてみた。
リクエスト内容を書き換えたり、任意の内容を送るのは、XMLHTTPRequestを使用する。

参考URL
JavaScript初級者から中級者になろう 十三章第一回 XMLHTTPRequest
ヘッダーを書き換えるには

書いてみたテストページ↓
<html>
<head>
<script type="text/javascript"><!--
function overwriteRequest() {
var httpRequest = new XMLHttpRequest();
// Firefox, Opera など
httpRequest.open("GET", "httpHeaderInjection.html", true);
httpRequest.setRequestHeader('Host', 'xxx.example.com');
httpRequest.send(null);
}
// --></script>
</head>
<body onload="overwriteRequest();">
</body>
</html>
※IEはめんどいので割愛・・・(ActiveXを呼ばないとダメらしい)

さて、実行してみると、ブラウザ側でこんなエラーが。(キャプチャはSafari)
『Refused to set unsafe header "Host"』はChromeでも同じスクリプトエラー。
ぐぐってみると、
Chrome拡張でHTTPヘッダを改変
http://lostlinksearch.net/blog/2012/03/chrome%E6%8B%A1%E5%BC%B5%E3%81%A7http%E3%83%98%E3%83%83%E3%83%80%E3%82%92%E6%94%B9%E5%A4%89/
であるように、一部のヘッダはヘッダを指定出来ないそうな。
まあ、セキュリティ上、そうだよなーと納得したところで、調査終了ー(ということにしたw)