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

find 検索

101 - 110 / 1320    [|<]  [|<]  [<]  11  12  13  14  15  16  17  18  19  20   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術/Security/DOM based XSS メモ1(DOMinator) msakamoto-sf 2015-03-07 21:46:56
技術/HTTP/Fenix Web Server (静的ページ開発用ローカルWebサーバ) msakamoto-sf 2015-03-07 20:20:26
Java/WebSocket/勉強メモ1 msakamoto-sf 2015-03-07 20:14:03
Java/ExecutorService, Futureのサンプル msakamoto-sf 2015-03-03 01:05:08
Java/Unicodeの正規化(normalize)メモ1 msakamoto-sf 2015-03-01 22:24:44
Java/ホスト名, マシン名を取得するメモ msakamoto-sf 2015-03-01 00:38:59
Java/JavaServer Faces(JSF)/調査メモ1 msakamoto-sf 2015-03-01 00:08:52
Java/NetworkInterfaceとMACアドレスの取得 msakamoto-sf 2015-02-22 22:18:21
Java/JavaDB, Apache Derbyの練習とメモ msakamoto-sf 2015-02-21 20:52:45
Java/Classのキャスト, instanceof演算子の代替など msakamoto-sf 2015-02-21 19:42:04
ソート項目 / ソート順     1ページ 件ずつ表示

技術/Security/DOM based XSS メモ1(DOMinator)  

所有者: msakamoto-sf    作成日: 2015-03-07 21:45:53
カテゴリ: JavaScript セキュリティ 

先日外部のWebセキュリティの方と話していたら、DOM based XSSの話題でDOMinatorというのを教えてもらいました。メモとして参考リンクなど残しておきます。

初期:Google Codeでホスティングされてた時代:

→2011年の紹介Blog:

→現在はMinded Security社の製品として、Webセキュリティの検査員向けのツール製品として販売。Free Trialは日数限定・機能限定のお試し版。

→上記HPのヘッダにリンクがあった、DOM based XSSのテストケースについてのナレッジベースWikiらしい:

Minded Security社作成の、DOM based XSSのテストサイト:

こちらは恐らくProになる前のGoogle Code時代のをGitHubに移してきたと思われる。コミットログもFirefox8時代の対応で止まっている。

アプローチとしては、FirefoxのJSエンジンを直接改造して、入力から出力に至るまでのコードパスを解析できるようになっている。
恐らく静的解析と、実行時の挙動を捉える動的解析を組み合わせた形と想像される。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-07 21:46:56
md5:9da362125466cdbf50b0c88a58ff444b
sha1:299ac14d993ada1c7b58b9aa79b1326036aa8c0e

技術/HTTP/Fenix Web Server (静的ページ開発用ローカルWebサーバ)  

所有者: msakamoto-sf    作成日: 2015-03-07 20:20:01
カテゴリ: HTTP ネットワーク プログラミング 

結構便利だったのでメモ。

開発用にローカルでシンプルなWebサーバを立てられる。
node.jsでのサーバが内部では起動される。
便利なのが、公開するディレクトリとポート番号のペアを複数設定できる=Webサーバのインスタンスを複数起動出来る点。
動的なFWというわけでは無いため、静的なリソースに限定されるものの、HTMLとかJavaScriptのちょっとした実験にも便利。

一度インストールすればOKではあるが、いざインストールしようとすると中々名前を思い出せなかったりするのでメモ。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-07 20:20:26
md5:9105d2e55dcacaa73cbf42a902b3477a
sha1:b670250465c29b3361ba02ec1919ad7e95392b40

Java/WebSocket/勉強メモ1  

所有者: msakamoto-sf    作成日: 2015-03-07 20:13:38
カテゴリ: Java ネットワーク 

JavaでWebSocket使うときどうするか、の勉強メモ。

Java API for WebSocket(JSR 356)がJavaEE7以降扱えるようになったっぽい。

参考:

Stack Overflowでの参考資料とか載ってるやりとり:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-07 20:14:03
md5:cb4a7aa7df17212cae3dc41dc083eb93
sha1:d0237bf9f12e126663814596a1fb6a2720b8c11f

Java/ExecutorService, Futureのサンプル  

所有者: msakamoto-sf    作成日: 2015-03-03 01:03:44
カテゴリ: Java 
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-03 01:05:08
md5:5ee68eb20e73e0ee336a2c08c95b4860
sha1:1bffcd8d794930f667e2e329900649f97e602378

Java/Unicodeの正規化(normalize)メモ1  

所有者: msakamoto-sf    作成日: 2015-03-01 22:22:18
カテゴリ: Java 

たまたま、はてブで、以下の記事を発見。「は~、Unicodeって色んな記号あるんだな~」と眺めてた。

そしたら、同じblogでこんな記事を見つけた。

記事はPHPだったが、Javaだとうどうかな?と思ってぐぐったらこんなの見つけた。

JDK6から正規化が使えるようになったみたい。
このへんで、ちゃんと「Unicode 正規化」でぐぐったら以下の記事を発見。スゴイ。

Javaの正規化で、本当に上の記事のようになるか、確認してみた練習:
https://github.com/msakamoto-sf/javasnack/commit/5853d88d0e043e85decf37272e07b1e5ce076ac1



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-01 22:24:44
md5:2a9ce33cd9f0a3d61ec956016896691a
sha1:d86cb6b9fb3d998d012de7a536b4352973a54b5a

Java/ホスト名, マシン名を取得するメモ  

所有者: msakamoto-sf    作成日: 2015-03-01 00:30:01
カテゴリ: Java 

実は以前調べたことがあり、間違って System.getenv("HOSTNAME") を使ってしまった。
Facebookで他のエンジニアがLinux前提で /proc/sys/kernel/hostname を読み込む方法使ってたのを見かけ、HOSTNAMEを使う方法を教えたらうまく動かず、今回改めて調べ直したら見事にHOSTNAME使うのはbash依存ということが判明orz.

"InetAddress.getLocalHost().getHostName()"はマシンのネットワーク設定, DNS等によっては失敗したり、期待したものとは異なるものが返ってくる可能性がある。

System.getenv("HOSTNAME") はNGだった。というのは、"HOSTNAME"は厳密にはbashが設定する「変数」であり、「環境変数」ではない。そのため、bash系の設定ファイルによっては、HOSTNAMEが環境変数としてexportされずに、取得できないケースがある。

参考:

unixであれば Runtime.getRuntime().exec("hostname") が無難。これはネットワーク設定ではなくkernelレベルで設定されたマシン名を返す。

Linuxの場合なら、 /proc/sys/kernel/hostname をJavaで直接読み込んでも良い。hostnameコマンドも結局このファイルを読み書きしてるだけ。

参考:

Windowsの場合は、System.getenv("COMPUTERNAME") が使えるらしいが、厳密な調査は出来てない。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-01 00:38:59
md5:2ce3dbd031b448a5bb1bb9b84e0afb96
sha1:6d23d3f3138b276a57be1dbe7b7bfb130056460f

Java/JavaServer Faces(JSF)/調査メモ1  

所有者: msakamoto-sf    作成日: 2015-03-01 00:08:37
カテゴリ: Java 

JSFとはどんなものか、いくつかググってみた参考URLメモ。

JavaEEに含まれるHTMLなどの画面系の仕様であり、JSRで調整されている。
また数年ごとにバージョンアップされており、開発のしやすさや機能性は向上している。
JSF 1.x系の時の評判は、一旦忘れて、素直にJSF 2.x系の最新版を調べたほうが良さそう。

JSPとは別物と考え、特にJSF 2.2で入ってきたらしいFaces Flowについては画面遷移の制御で、むしろSpring WebFlowやASP.NETアプリに近いアーキテクチャになってる・・・ような、印象を受けた。

JSF 2.xや2.2系列について、HTML5との親和性が向上した云々:

JSFでのリッチなUIライブラリとして、PrimeFacesというのがある。HTML5にも対応しているらしい。

他にもJBossのRichFacesがあった。

ただ、フロント開発がJavaScriptともに大きく揺れ動いている昨今、HTML5との兼ね合いや、訴求対象の開発者のカテゴリなどで、色々将来どうなの?的な話も見つかる。
例えば以下の記事は、JSFで実際に開発してみて、もう沢山だ!となった人が色々と愚痴をまとめてる。コメント欄も炎上してて、JavaEEのMVC仕様策定者もコメントしてたりで、大変面白いことになってる。

実際にJSFの内部のライフサイクルや、どうデバッグするかの解説記事。これを見るとASP.NETと似通った部分があり、サーバサイドとフロントのJavaScriptサイドの両方の知識が要求されることが分かる。

余談だが、JAX-RSやSpring MVCのちゃんぽん的に、JavaEEでMVC(つまりURLマッピングに基づくアクションコントローラ形式)のフレームワークの仕様化が始まっている。

個人的には、JSFにせよMVCにせよ、どんどん複雑・多様化していくWebフロントエンド技術で、どうしても発生する「複雑さ」をどこに持っていくかの問題になってきてる気がする。
AngularJSなどの最近のWebフロント技術は、基本的にブラウザ側のHTML+JSで複雑さに対応し、サーバサイドはAPIだけに絞る方向に見える。
一方でJSFやASP.NETの世界は、複雑さをサーバサイドの状態管理で対応しようとしていて、そのため、サーバサイドのライフサイクルとフロントエンド側のJSの両方に、微妙に複雑さがまたがってしまってる感じを受ける。
また業務アプリとそれ以外でも断絶はある。消費者向けのコンテンツサイトにおいて、業務アプリのような複雑なUIや画面遷移は必要ない。むしろREST的な世界観を求められるため、状態に紐付いたURLは敬遠される。一方で業務アプリはURLのREST性は不要なので、サーバサイドで状態管理された、非RESTなURLや画面遷移は許容される。また大規模開発をサポートするために、コンポーネント指向の仕様やフレームワークになっていく。

個人的には、もはやWebフロントの複雑性はサーバサイドで状態管理できる範囲を超えていて、JSFや.NET系のサーバサイド+フロントJSで状態管理を連携させるアーキテクチャは、開発者の負担が上がっているのではないかと思う。
むしろサーバサイドはAPIと初期HTMLページを表示するだけのものと割り切り、JS側でDOM構造の状態管理を行う方が、境界が明確で分かりやすい。(学習曲線はこの際無視する)
その上で、消費者向けのコンテンツサイトなどと、業務アプリでの複雑なUIコンポーネント制御とで、使用されるJSライブラリは異なってくるだろう。

・・・とはいっても、JSFはコンポーネント指向+画面フローの制御という点に旨味があるのは確かなで、一緒についてくる「苦味」とどこまで・どの位付き合っていけるかはもう少し勉強してみないと分からなそうであります。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-01 00:08:52
md5:b5b7e4afba079d1bef47fbbef494ee66
sha1:177ee255834c09c989ebd31221a272ba3a313ba7

Java/NetworkInterfaceとMACアドレスの取得  

所有者: msakamoto-sf    作成日: 2015-02-22 22:16:28
カテゴリ: Java ネットワーク 

Java 1.6 になり、java.net.NetworkInterfaceクラスでMACアドレスを取得できるメソッドが追加された。

練習:(ほぼITProからのコピペ)



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-02-22 22:18:21
md5:56f7b4a66ec1d6bcb6be8512cea355d1
sha1:a3e060af591ca4f9cc15a382474f03421c0c6e93

Java/JavaDB, Apache Derbyの練習とメモ  

所有者: msakamoto-sf    作成日: 2015-02-21 20:52:29
カテゴリ: Java 

  • Apache Derby : JavaによるOSSのRDB製品, APL2
    • http://db.apache.org/derby/
    • 軽量を謳ったJavaによるOSSのRDB製品で、中核となるderby.jarは2MB程度(2015-02時点)。
    • 自分のアプリ内に組み込んで利用できる。一般的にはファイルシステム上にデータを配置するが(JDBCの接続文字列でルートディレクトリを指定)、インメモリでも操作できる。
  • Java DB
    • http://www.oracle.com/technetwork/java/javadb/overview/index.html
    • http://docs.oracle.com/javadb/
    • SunがJDK6からApache Derbyを同梱し、"Java DB"というブランド名にした(らしい)。単純に、JDKをJava DB付きでインストールするとJDKインストール先に"db"というディレクトリが追加され、その中にApache Derbyをサーバとして起動するためのひと通りのjarファイルと起動スクリプトが入ってる。
    • JDK8の時点では、Oracleがサポートして配布してるApache Derbyということになってる。
    • 誤解しそうだけど、JDKをインストールすると、セットでApache Derbyのサーバ実行用のファイルセットがくっついてくる、程度に考えれば問題無さそう。
    • クライアントを開発する場合は、普通にMavenから groupId=org.apache.derby のjarを引っ張ってくることになるので、特にJREがどうとか、クライアントアプリを書くときにどうとか、という話ではない。

参考:

練習:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-02-21 20:52:45
md5:9f06598a6ff8dd6453257aa373cb005c
sha1:d0e6358b66702892a53cb9ab99e1ba71a29fab93

Java/Classのキャスト, instanceof演算子の代替など  

所有者: msakamoto-sf    作成日: 2015-02-21 18:49:58
カテゴリ: Java 

Classのキャストなどで便利そうな Class のインスタンスメソッド3選。

  • Class#isAssignableFrom() : instanceof 演算子と似ているが、isAssignableFrom()のメリットは、検査対象のClassを例えばメソッドの引数などから動的に取ってこれる点。
someMethod(Class superClazz, Object testee) {
    if (testee instanceof superClazz) {

というのはsyntax errorで書けないが、

someMethod(Class superClazz, Object testee) {
    if (superClazz.isAssignableFrom(testee.getClass()) {

と書くことができるようになる。

  • Class#cast() : これもキャストする型を動的に決められるのがメリット。
someMethod(Class castClazz, Object target) {
    Object o = (castClazz) target;

というのはsyntax errorで書けないが、

someMethod(Class castClazz, Object target) {
    Object o = castClazz.cast(target);

と書くことができるようになる。

  • Class#asSubclass() : ユースケースが不明。

最後のがユースケース不明でちょっと使い道が分からなかったけど、とりあえず3種類、テストケースで使い方を練習してみました:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-02-21 19:42:04
md5:b77fd9bf5c8a238c71a710132430b4c1
sha1:e4b46b687a98f00130c4f68276408aef174913cb