いろいろ備忘録

雑記です。

2017-09-01から1ヶ月間の記事一覧

安全なWebサイトの作り方 失敗例 要約

前の記事で書いたものは省略しています。 OSコマンドインジェクション 失敗例 「"」と「;」、「'」、「<」、 「>」、「|」、「 (空白)」を削除する関数を使っていた。 失敗の理由 コマンド引数に、入力された値を使用するときは、 シェルで特別な意味を持つ…

安全なウェブサイトの作り方 安全性向上 要約

ウェブサーバ OS やソフトウェアの脆弱性情報を継続的に入手し、脆弱性への対処を行う ウェブサーバをリモート操作する際の認証方法として、パスワード認証以外の方法を検討する 総当りこうげきとうにで突破されるおそれがある。 暗号技術に基づいた公開鍵認…

安全なウェブサイトの作り方 脆弱性対策 要約

SQLインジェクション 根本的な対策 SQL 文の組み立ては全てプレースホルダで実装する プレースホルダに実際の値を割り当てる処理はバインドと呼ばれる。 DBエンジンがバインドする静的プレースホルダが望ましい。 SQL 文を動的プレースホルダで生成する場合…

SC 22春 午後1問1設問2(3) volatile synchronized

グローバル変数の同期を取る方法を書くが、volatileは意味をなさないそうだ。 なぜか: Javaにはメインメモリとスレッドごとのキャッシュ領域があり、 synchronizedはメインメモリのフィールドに直接ロックをかける。 一方、volatileはスレッドのキャッシュ…

(implicit s: Show[A])

def log[A](a: A)(implicit s: Show[A]) = println(s.show(a)) この(implicit s: Show[A])はカリー化とimplicitを両方使った結果。 もしlog[Int](3)とすると、引数sが渡されていない、かつimplicitなので、Intが引数で、かつimplictなShowメソッドを探す。 i…

def f(s1: String): (String => String) = s2 => s1 + " " + s2

Scalaの省略記法について。 def func(s1: String): (String => String) = s2 => s1 + " " + s2 メソッドの名前はfunc引数:String型のs1返り値の型:引数、返り値が共にStringの関数返り値:イコール以降の関数 カリー化されている。 qiita.com

javaのstatic { }とか{ }

スタティックイニシャライザ クラスがロードされる際に呼ばれる。 static変数の初期化が関数を使って出来る! static { } インスタンスイニシャライザ コンストラクタと似ているが、 コンストラクタがA(), A(String name)などとオーバーロードされているとす…

N Scala応用 型パラと変位

Javaでは全てのクラスがObject型のサブクラスだが、ScalaではAnyが最上位のクラスで、次にIntなどの値型はAnyValクラス、参照型はAnyRefクラスのサブクラスになる。図にすると、 引用元: Learning Scala part eight – Scala’s type hierarchy and object eq…

N Scala応用 関数 覚書

ScalaにはFunction0 ~ 22のトレイトがある。数字は引数の数で、0なら返り値のみ。関数の作り方をきちんと追うと、まずこれらのトレイトを継承した無名クラスを作り、その中でapplyメソッドを宣言する、という流れ。この辺が関数型言語の特徴なのか? applyメ…