BLOGTIMES
» ArchiveList (Tag for "java / php" )
«Prev || 1 · | Next»
2016/11/04

Cookie を JavaScript から取得させない

malware  javascript  php  java  chrome  rfc 

Chrome の機能拡張にマルウェアが仕込まれていて騒ぎになっているようです。

その中で紹介されていた Cookie の httponly という属性*1が興味深かったのでメモ。

Cookie の仕様とセキュリティ

httponly 属性をつけると、そのクッキーは Cookie ヘッダ以外から読み取ることができなくなりなり、JavaScript から参照できなくなります。 Secureの反対の意味、 http でしか送信されないCookieという意味では ない ので気をつけて下さい。
このオプションはXSS脆弱性があった場合の被害を小さくします。 XSS脆弱性によって攻撃者が任意のJavaScriptが実行できてしまうと、 document.cookie の値を読んで Session ID などのログイン情報などを盗み見れてしまう可能性がありますが、 HttpOnly属性をつけておくとクッキーが XSS 脆弱性によって読み取られることがなくなります。

アプリを書くときに Cookie の Secure 属性は意識してつけていたものの、HttpOnly は Secure の逆かと勘違いしていて、完全にスルーしていました。なかなかの大失態です。

Java の場合には Servlet 3.0 から HttpOnly を指定するためのメソッド javax.servlet.http.Cookie#setHttpOnly()*2があります。また、PHP の場合には PHP 5.2 以降であれば setcookie()*3の第7引数を使って設定することができます。


at 21:22 |
2011/02/10

浮動小数点変換バグはJavaにもあった

php  java  cve  PoC 

先日、PHPで特定の浮動小数点数を入力するとハングするという問題*1*2があって、急遽アップデート版が出たりとかしてちょっとした騒ぎになりました。

<?php $d = 2.2250738585072011e-308;

これと同じような問題がJavaにもあった模様。
 ・Security Alert For CVE-2010-4476 Released (The Oracle Global Product Security Blog)
 ・Java Hangs When Converting 2.2250738585072012e-308 - Exploring Binary

確かに、下記のようなコード実行すると、fooを出力してそのまま固まってしまいますね。
ウェブアプリなんかで、外部からの入力をDoubleに変換してるところがあったりすると目も当てられないかも。

class Hoge { public static void main(String[] args){ System.out.println("foo"); Double.parseDouble("2.2250738585072012e-308"); System.out.println("bar"); } }

PHPとJavaでは一番最後の数字が1違いますが、これがどのような境界値なのかというのはちょっと興味があります。
今はちょっとこういうことにうつつを抜かしているわけにはいかないので、懸案が片付いたらいろいろ調べてみたいと思います。


at 21:23 |
«Prev || 1 · | Next»
» ArchiveList (Tag for "java / php" )