Java
少し調べたのでメモ 概要 外部からの入力をlog4jでそのままログ出力しようとすると、任意のコードを実行できる脆弱性 CVE-2021-45046とv2.16.0について v2.15.0で修正されたかに見えたが、MessagePatternConverter以外の攻撃経路が見つかった。そのため、v2.…
コネクションプールからコネクションを取得すると、接続が切れているコネクションを再利用してしまうことがある。 これを防ぐためにコネクションプール側で何かやっていないかなとちょっと調べた。c3p0は testConnectionOnCheckin - プールから取得する時に…
S2-045の話は既に書いたけども、S2-046は書いていなかったのでちょっと書く。↓のやつ。Struts2-046: A new vector - Hewlett Packard Enterprise Communityこの脆弱性は、以下の3つの条件に合う場合、マルチパートのアイテムのファイル名に記述されたOGNL式…
同じライブラリのjarがバージョン別でWEB-INFに置かれていた場合、どっちが読まれるのかなという話。 JSR-000315 Java Servlet 3.0 Final Release のPDFの「4.6. Resources」のところ、 The order in which the JAR files in the WEB-INF/lib directory are …
JVNVU#91375252: Apache Struts2 に任意のコード実行の脆弱性ぐぐるとみつかるPOCで1番簡単そうなのを解説してみる http://www.example.com/sample.action?method:%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%2C%23test%3D%23context.get%…
UDPしか対応していないか。TCPやUNIXドメインソケットには対応していないか。SyslogAppenderはSyslogWriterを利用していてその中身は以下のような感じ。log4j/SyslogWriter.java at v1_2_17 · apache/log4j · GitHub package org.apache.log4j.helpers; ... …
実践 JUnit ―達人プログラマーのユニットテスト技法作者: Jeff Langr,Andy Hunt,Dave Thomas,牧野聡出版社/メーカー: オライリージャパン発売日: 2015/09/02メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る基本的なJUnit4テストの作り方…
昔(v1.4) 現在(v1.10) commons-configurationのせいだけではないけど。
Jersey1.xでJSON入出力するにはJAXBを利用する方法もあるのだが、一番シンプルなのはPOJOとJSONオブジェクトのマッピングを利用する。デフォルトだとこれが有効になっていないので、POJOMappingFeatureを有効にする。サーブレットコンテナだとweb.xmlのinit-…
Jersey1.x自体にDIの機能があるので、それを使ってみる。基本的には package com.sun.jersey.spi.inject; public interface InjectableProvider<A extends Annotation, C> { ComponentScope getScope(); Injectable getInjectable(ComponentContext ic, A a, C c); } を実装してプロバ</a>…
最初からJerseyを使っていなくて、普通のServlet→Jerseyに変換というようなことをしたい場合、ServletContextListenerにアプリケーションの初期化コードとかを書いていてうまくテストできなかったりする。まあ、そのあたりもJersey化すれば良いのだけども、…
pom.xmlに書いてからプロジェクトを選択して「Maven」→「Update Project...」してもPluginを実行してくれない。「Maven」→「Discovery」→「Open Catalog」からインストールしないとダメっぽい。
某書でJavaで文字列から数値に変換する時にXXX.valueOf(ex. Long.valueOf)よりもXXX.parseXXX(ex. Long.parseLong)を使ったほうが効率が良いよと書いてあったのだが、そもそも、前者はオブジェクト型、後者はprimitive typeを返すので目的がちょっと違うよう…
世の中のコーディング規約的にはどうなのかなと思ったのでちょっと調べたら中括弧付ける方が多い気がする。 C or C++ Google In general, curly braces are not required for single-line statements, but they are allowed if you like them; conditional o…
コーディングスタイル論争「カッコを省略するな」が出るたびに思う事私はコーディング規約で決まっていなければ括弧は使わない派かな。中括弧を使わないと if (cond) statement; と書いていた時に、条件分岐中の処理を増やそうとして if (cond) statement; s…
setCharacterEncoding void setCharacterEncoding(java.lang.String env) throws java.io.UnsupportedEncodingExceptionこのリクエストのメッセージボディで使われている文字エンコーディング名を上書きします。 このメソッドはリクエストのパラメータを読み…
回避策をいろいろ見かけるようになったのでちょっとまとめる サーブレットのFilterでフィルタ Protect your Struts1 applications - HP Enterprise Business Community FilterでStrutsにリクエストが来る前にclassを含むクエリパラメタをエラーにしてしまう…
今回のStruts1の脆弱性の問題は、どちらかというとcommons-beanutilsの問題な気がする。commons-beanutilsはアクセス可能なプロパティは全て設定できてしまうのだが、使う側からすると自分が想定しているプロパティにのみ設定してほしいという要望はあるだろ…
Java8のREPLが欲しかったので。JAVA_HOMEを指定すれば良いか。 $ JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home groovysh Groovy Shell (1.8.5, JVM: 1.8.0)
Hibernateはデフォルトで多対1の関連もlazy loadのはずなんだが、primary keyでの関連ではないとlazy loadしてくれないっぽい。org.hibernate.engine.TwoPhaseLoad#initializeEntityで初期化していないEntityを初期化するコードの部分で、org.hibernate.Type…
Interceptorを使えばよいか。 public class DatetimeInterceptor extends EmptyInterceptor { @Override public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] typ…
commons-configurationのPropertiesConfigurationとjava.util.Propertiesの仕様が異なるためにはまってしまった。値が空白(\u0020)を含む場合、バックスラッシュでエスケープする必要があるのだが、PropertiesConfigurationでは行末の空白はバックスラッシュ…
JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)作者: 渡辺修司出版社/メーカー: 技術評論社発売日: 2012/11/21メディア: 単行本(ソフトカバー)購入: 14人 クリック: 273回この商品を含むブログ (65件) を見るこれは非常に面白かっ…
githubのwikiが一番よく書かれてあるような気がする。 Home · KentBeck/junit Wiki · GitHub
Togetter - 「hashtableのn * 2 + 1の意義」 なるほど。Hashtableのハッシュ関数はハッシュの再作成するときに、 protected void rehash() { ... int newCapacity = oldCapacity * 2 + 1; Entry[] newMap = new Entry[newCapacity]; ... } と、古いサイズnに…
Mac OS Xのupdateにおいて以下のような文言があって、 As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated. Java for Mac OS X 10.6 Update 3 and 10.5 Upd…
実装パターン作者: ケント・ベック,Kent Beck,永田渉,長瀬嘉秀,株式会社テクノロジックアート出版社/メーカー: ピアソンエデュケーション発売日: 2008/12/22メディア: 単行本(ソフトカバー)購入: 30人 クリック: 502回この商品を含むブログ (91件) を見るJ…
JavaにはArrays#sortというメソッドがあって配列をソートすることができる.ソートする対象がプリミティブ型だとquick sortで実装され,オブジェクトだとmerge sortで実装している.オブジェクトのソートはstableであるという仕様のためだと思われる.さらに…
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd"); Calendar c = Calendar.getInstance(); c.set(2000, 0, 1, 0, 0, 0); assertEquals(df.parse("2000/01/01"), c.getTime()); こんな間違いをしてしまった.しかも,エラー見ただけではすぐに気付…
UMLを書く必要があったのでJude Communityをインストールした。サポートはWindowsだけなのだがJavaなのでMacでも実行できる。unix系用のシェルスクリプトを付属されているし。でも検索してみるとバンドルにしてインストールしている人がいたので自分もやって…