特に断りがない限り、環境はOSX、neo4jは3.4.5を参照。
REST APIの/user/<user name>/passwordに対してPOSTする。
httpプロクシによるペネトレーションテストを行う際に、対象となるアドレスが不定であったりOSのプロクシ設定に従わないようなクライアントがあるとする。 この場合でも全ての対象ドメインが数え上げられる場合はDNSスプーフィングによって介入することが出来るが、透過型プロクシを使うのがより確実な方法である。 ここではOSX上のmitmproxyをプロクシサーバーとして使用し、任意のドメインとポートを対象としたhttp(s)通信へ介入する手法について説明する。 前提として、対象クライアントは既にプロクシの証明書を信用済みであるとする。
テスト用に自己証明書を用いてローカルhttpsサーバーを立てるなどの際に、クライアントから危険な接続として扱われないように証明書を設定をする方法について説明する。
通常ホストの真正性を確認するためにはドメイン名を使用するが、環境の都合上ローカルにDNSを立てるのが難しい場合がある。クライアントへの介入が難しい場合は/etc/hostによる書き換えも出来ない。
そこで、x509.v3のsubjectAltName拡張を用いてIPをホスト名の代わりに使用し、任意のIPアドレスに立てたサーバーを真正なものとして扱えるようにする。
(WIP)
| namespace Deferred | |
| { | |
| public class BasePromise | |
| { | |
| protected enum State | |
| { | |
| Pending, | |
| Fullfilled, | |
| Rejected | |
| } |
| // Poorman's continuation passing style library | |
| struct Cps { | |
| static func seqByIdx<E, U>(list: [(U, (E?, U) -> ()) -> ()], idx: UInt, value: U, next: (U) -> (), fail: (E) -> ()) { | |
| if idx >= UInt(list.count) { | |
| next(value) | |
| } else { | |
| list[Int(idx)](value, { (errorp: E?, result: U) -> () in | |
| if let error = errorp { | |
| fail(error) | |
| } else { |
#イベント駆動アーキテクチャ心得集
イベントを設計するのではなく、責任分界点を設計せよ
命令形ではなく過去形を使用せよ
ディスパッチャーはリスナーの存在を想定してはならない
ディスパッチャーはリスナーの数を想定してはならない