ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

セキュア・プログラミング講座(Webアプリケーション編)第2弾:マッシュアップ

2013-12-13 19:45:48 | JavaとWeb

『セキュア・プログラミング講座(Webアプリケーション編)』第2弾:マッシュアップ(12/13)
http://topse.or.jp/2013/10/2068

に行ってきた!その内容をメモメモ




従来のWebアプリケーション
・紙芝居的な画面遷移
  わりとゆっくりとした動き
AJAX流アプリケーション
・滑らかな画面変化
  反応速度はやい
構図の変化
 従来は、サーバー側が動的
 AJAXは、ブラウザで動き、サーバーはデータを与える

1.WebAPI
 Webアプリケーションとなに違う?
  →ユーザーの会話を想定しない
 クライアントへデータや演算結果
・REST
  Representational State Transfer

 HTTPリクエストと対応付ける
 特徴4つ
  ・ステートレスな通信プロトコル
  ・リソースでステートを表現
  ・簡素化されたオペレーション
  ・URIのパス部分でリソースを識別

 RPC,SOAPはソフト複雑になる
  →REST風

 Ruby on Railのresourcesタイプルーティング

2.マッシュアップの構図
・マッシュアップ
  音楽DJの世界におけるマッシュアップ
 →Webにおける「マッシュアップ」
    複数の既存WebAPIを組み合わせ
    新たなWebアプリケーションを作成

 2種類のマッシュアップ
  クライアント側マッシュアップ
  サーバー側マッシュアップ

マッシュアップに対する侵害パターン
  悪意のAPI→ゆーざー
  悪意のAPI→API
  無関係のサイト→API
  無関係のクライアント→API

今回はブラウザが侵害される「悪意のAPI→ゆーざー」を考える

Javascript
 インタプリタ言語
 Javaに似た構造(似て非なる言語)
 動的型言語(実行時に型が決まる)
 オブジェクト指向(プロトタイプを使う)
 リテラル表記の表現力
 関数型プログラミング

制御構造
 分岐
 ループ
 ループから脱出

コンストラクタとプロトタイプ
 コンストラクタ関数/new Foo() 新しいオブジェクト
   →プロトタイプオブジェクト
      →プロパティ

 コンストラクタはオブジェクトに振る舞いを与える
 プロトタイプがチェーンにより、継承に相当することができる

ブラウザのJavascript実行環境
・ECMAスクリプトオブジェクト
・ブラウザオブジェクト
・DOM
・Javascriptアプリケーションコード

windowとグローバルオブジェクト
・グローバルオブジェクト:
  すべてを収容するトップレベルオブジェクト
・ブラウザのグローバルオブジェクト=window
  document = window.document

4.クライアント側コードに起因するスクリプト注入
・innerHTML
  スクリプト注入攻撃できる
  →ID,パスワードを入れるようにさせる&のっとりできる
 →imgタグで src=/でかならず、失敗させ、
  onerrorの先に、実行したいことを記述する。

病理メカニズム
・スクリプトはどこにある
  head,bodyのscriptタグ
  イベントハンドラ
・スクリプトはいつ実行されるか?
  (1)HTMLが読み込まれたとき
  (2)イベントハンドラ:イベント起きたとき
  (3)動的に:動的についたとき
  (4)くっつけたときにイベントが起きればすぐに
      →onerror
・スクリプト注入
 外から来た値
  HTTPリクエスト
  クッキー
  WebAPI
  別のクライアント

 DOM,eval関数→スクリプト動く

・攻撃パターンの入口
  location
  クッキー
  XMLhttpRequest
  WebSocket:第三者
  postMessage()
  Window.name
  WebStorage

・どこに行くと危ない
  eval系
   eval
   function→文字列から関数
   settimer
  scriptタグ
  IFRAMEタグ→サンドボックス属性,
  イベントハンドラ
  innerHTML
  document.write

対策
・インラインスクリプトを避ける
  →スクリプトを分離する
 サーバー側コードでスクリプトを出力せず、別ファイルで
・入力を警戒する:仕様を決めて、入力チェックする
・正規表現のバグに注意する
 .+,.*は貪欲なので、工夫する
 .は改行文字にはマッチしない
   ユニコード2028攻撃
 ^と$を忘れない
  (\A,\zはjavascriptではサポートされていない)
・タグではなく、テキストとして出力する
・JQueryで$(検索式)→検索式のところで、タグが生成されることも
  →findを使う
・html()は危ない→innerHTMLと同じ
  →text()で書く
・$.parseHTML()の使用も避ける

5.同一源泉と他源泉
・これまでの脅威の構図
  クライアントから脅威
 最近は
  サーバーが脅威
源泉:Webコンテンツの出所
 スキーム、ホスト、ポートの3つ組み
 これが違うと、源泉が違うかも
   例:ポート80、ポート8080

セキュリティ確保のための源泉
・同一源泉ポリシー
  かつての制約
  →マッシュアップにとっては不便
抜け道
・JSONP
・iframeの3重
・iframe+postMessage
・webワーカー+importScript

→XMLHttpRequest level2 XHR2
→IEではXDomainRequest
Originリクエストヘッダー→Access-Control-Allow-Origin
 →サーバーには拒否権がある
 →ブラウザには、歯止めがない
   :スクリプト注入攻撃
対策にはCSP
・ContentSecurityPolicy
  アクセスできる源泉のホワイトリスト
 実装:FireFoxから
 W3CではCSP1.1がドラフト、Androidでもサポート予定

他のマッシュアップ論点
・CSP
・クライアント側マッシュアップにおける
 リクエスト強要(CSRF)
・HTML5の新機能
・javascript向けフレームワーク
・サーバー側マッシュアップ
・IE固有

パーフェクトJavaScript
JQuery 9521
古いバージョン(1.6)などは危ない
でも、前のバージョンも修正されている

HTML5でタグ増えた
onの着かない属性:危ない属性

脆弱性をチェックする仕組み
有償の検査ツール:出始めてはいる

性能、負荷テストのかわりに
セキュリティ用のテストがあっていいはず。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Wordファイル内の画像の解像度を、いっぺんに落としたい(案)

2013-12-13 14:00:01 | Officeソフト&VBA
まだ、やっていないので、アイデア(案)段階。

【問題】
Wordに、相当な画像を貼りこんで、とても大きくなってしまった。
すべての画像の解像度を、出来るだけ簡単に落としたい

【ソリューション案】
・docx形式で保存する
・拡張子をzipにして、解凍する
  →docxは、zipファイルで固めてあるXML+画像ファイル
・word/_relsに、ファイル名とIDの対応が書いてある
・word/mediaの下にイメージファイルがある

  →ここまで確認した。


よって、このあと、
word/mediaの下のイメージファイルの解像度を全て落とし、
もう一度zipで固めなおして、拡張子を.docxに戻せばよい?

・・・まだやってない。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

統計モデル その5 探索的因子分析(いわゆる因子分析)/信頼性と妥当性

2013-12-13 09:11:28 | AI・BigData

統計モデル その4 パス解析
http://blog.goo.ne.jp/xmldtp/e/883ff50a30dc1d864e9b0acd12b78e85

の続き。「統計モデル」の授業のメモメモ




■前回の復習

モデルの修正
・適合度を上げる
 →数値で示すこと可能
 →理論的に妥当な修正
・モデルを当てはめた結果=Σ
 SとΣの差を求める
  →大きいところ
 残差間(誤差間)の相関をいれてみる
・修正指数
 mi→カイ2乗の減少量予測
・パス解析
 関係の強さ
 因果の方向を知るのは難しい

・直接効果の解釈
 他の影響が一定/排除

・間接効果の解釈
 パス係数の掛け算

・総合効果
 直接効果+間接効果
 標準化の使い分け
  単位に意味あり→標準化しない

・潜在変数間のパス解析
 合計得点間のパス解析より、係数・相関大きくなる
  →希薄化の修正
 因子を使うと、飽和モデルでなくなることも

・等値制約
 複数のパス係数が等しい量であるとする制約

・誤差分散・誤差間共分散
  誤差分散を明示的に書くもの/書かないもの
   →lavvanは後者(勝手にやる)
    amosは前者
  誤差間共分散は書く
  誤差分散を等しくする場合はlavvanでも書く

・等値制約の影響
 標準化推定値が等値になるとは限らない
  →まず等値にならない

・修正係数
 誤差の共分散

・分散を1に固定
  f1~~1*f1
 因子負荷量を推定 NA*
 おなじにするequal

<HR>

■探索的因子分析(いわゆる因子分析)
・構成概念が定義することが難しい場合
  →名前を後からつける

・例:ビッグファイブ理論
  →おおよそ5つ

・信頼性と妥当性
  信頼性:同じ値が得られる
  妥当性:意図した構成概念を測定できているか

・探索的因子分析でわかること
  因子数がはじめわからない→決定する
  因子負荷量

・因子分析的考え方

・因子分析の言葉
  寄与
  回転

・寄与
 各因子が観測変数のすべての分散のうちの
 どれだけを説明するか
 各因子に注目
  →%で表現したり・・

・共通性
 寄与と混同しやすい
  共通性:観測変数に注目

Rによる探索的因子分析の手順
何回も行う
・固有値のスクリープロットを作成して
 (これ以外も見る)
 因子数を決定
    →変数削除も
・初期解と共通性を求める
・因子軸の回転
    →結果変換
・因子の解釈

因子分析における解の不定性
・因子分析:変数間の相関を利用して、
 変数を少数の因子にまとめる
・同じ相関行列から複数の解
  →解の不定性
・まずは、初期解をもとめ、説明しやすいものを

不定性をとめる
・二次のせきりつ(二次のもーめんと)
---------------------------------
 三次のせきりつ(三次のもーめんと)


<HR>

■Rでの操作

library(psych)
#    けっそく値を削除
bfi2<-na.omit(bfi[,1:25])
#    とりあえずnfactorを1、fmはml(最尤法)
fa(bfi2,nfactors=1,fm="ml")
#    スクリープロット
plot(fa(bfi2)$e.values,type='o')
#    大きく下がる手前を選ぶ。固有値1以上
#    因子数を5に,回転しない
fa(bfi2,nfactors=5,fm="ml",rotate="none")

#    回転させるライブラリ
library(GPArotation)
#    プロマックス回転
fa(bfi2,nfactors=5,fm="ml",rotate="promax")
#    バリマックス回転
fa(bfi2,nfactors=5,fm="ml",rotate="varimax")

<HR>
■結果の見方
・h2共通性
・u2独自性
  →回転しても同じ
・ML1,ML2・・因子

■削除する項目
・平均が極端な項目を削除
   →みんなが同じ回答
・因子負荷量(0.4未満)、共通性(0.3未満)を削除
・複数の因子から影響を受けている
・SEMのように残差を見て削除
・項目を削除すると、適切な因子数が変わることも!

<HR>

■項目削除のR操作

#1項目抜く
fa(bfi2[, -1], nfactors = 5, fm = "ml", roteto = "promax")

#2つ抜く
fa(bfi2[,c(-1,-24)], nfactors = 5, fm = "ml", roteto = "promax")

#1個ずつ抜いて、確認すること

<HR>

■バリマックス回転結果
・値が固まってきて、因子の内容わかる
   →単純構造

・一般にバリマックス回転よりも、プロマックス回転の方が明確になる

・なぜ、「バリマックス」というのか?
  因子負荷量の9ばりあんす(分散)をMAXに
  →最近あんまり使われなくなった
   因子と因子の間の相関を0に固定してるので

・プロマックス
  因子間の相関を許容している

  プロマックスの寄与、寄与率には2つの考えがあるが、
  そちらではなく、初期解のプロマックスの寄与、寄与率

<HR>

■Rの因子得点

round(fa(bfi2[,-1],nfactors=5,fm="ml",roteto="promax")$scores[1:10,],2)

#1:10つけないと、いっぱい出てくる
#確認的因子分析でもpredictを使ってできる

<HR>

■手順のまとめ
・因子数:固有値、解釈できるか
・因子負荷量/共通性で観測変数を減らす
・報告すべき結果:プロマックス回転の結果
・各因子が何を表しているか:因子の命名

<HR>

■信頼性

・構成概念を測定するための測定道具の性能を示す指標の1つ
  →もうひとつが妥当性

・信頼性:測定値の安定性

・測定値=真値+測定誤差
 →平均的にみれば、誤差0?
 →そこで、分散を求める

 信頼性=真値の分散/測定値の分散

 信頼性が高い
   誤差の分散0に近い=測定が安定
   真値の分散=測定値の分散→信頼性1

 信頼性が低い
   信頼性の値は低くなる

 決定係数などと同じようなもの

・大問題
 でも、測定値は求められるが、
 真の値や誤差は求められない

 →別のテストを考える
   
 2つのテストとの相関:信頼性

・信頼性
  再検査信頼性:別の時期の、同一のテスト
  平行検査信頼性:別バージョン

・大問題
  2回求める・・・1回で
  折半信頼性→2個でなく4個に・・
    =α係数:すべての分け方の平均

  n 相関の合計
--------------------------
 n-1 項目数+相関の合計

・α係数の問題点
 同じように測定しているという仮定:
  むずかしい。
 →因子分析では、誤差は違うと仮定した

・因子分析の枠組みで信頼性を考える
  →ω係数

・Rでは、alphaで求められる
・α係数=内的整合性の指標
・他の信頼性とは、違う概念の指標
  →一番妥当なのは、再検査信頼性
・一致係数:評定者間の整合性の指標

■妥当性
・本当に測りたいものが、測れているか?
  →測定値の解釈に対する適切性

 信頼性が高く、妥当性が低いときがある

 適切性を保証するための証拠を提示する
  →一般化可能性の側面の証拠:信頼性
   妥当性を示す証拠のひとつが信頼性
  →外堀を埋めていく


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする