<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/dynm7/">
    <title>勉強メモ</title>
    <link>http://w.atwiki.jp/dynm7/</link>
    <atom:link href="https://w.atwiki.jp/dynm7/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>勉強メモ</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-04-28T15:08:09+09:00</dc:date>
    <utime>1303970889</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/54.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/53.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/52.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/51.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/49.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/48.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/47.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/46.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/45.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/dynm7/pages/44.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/54.html">
    <title>IPA安全なウェブサイトの作り方</title>
    <link>https://w.atwiki.jp/dynm7/pages/54.html</link>
    <description>
      *1.1 SQLインジェクション
データベースと連携したwebアプリケーションは、利用者が入力した情報をもとにSQL文を組み立ててデータベースを利用する。このとき入力フォームなどに不正なクエリを埋め込むことによってデータベースを不正利用することを、SQLインジェクション攻撃と呼ぶ。

&gt;発生しうる脅威

-データベースに蓄積された情報の漏えい
個人情報等が漏洩する。
-データベースに蓄積された情報の改ざん
webページの内容が改ざんされたり、管理者以外の手によってパスワードが変更されてしまうことがある。
-認証回避によるログイン
ログインした利用者に許可されている全ての操作を不正に行われる。
-ストアドプロシージャを利用したOSコマンドの実行
システムの乗っ取り、他への攻撃の踏み台としての悪用。ストアドプロシージャとはデータベースに対する一連の処理手順を一つのプログラムにまとめ、データベース管理システムに保存したもの。戻り値付きのものはストアドファンクションと呼ぶ。

&gt;根本的解決方法

-SQL文の組立ては全てプレースホルダで実装する。
SQL文のひな形の中に変数(プレースホルダ)において、後に変数の中に値を割り当てる。

-SQL文の組立てを文字列連結により行う場合は、エスケープ処理等を行うデータベースエンジンのAPIを用いて、SQL文のリテラルを正しく構成する。
SQL文において特別な意味を持つ記号が入力されたときに、別の文字に変換するようエスケープ処理を行う。

&gt;保険的対策

-データベースに関するエラーをブラウザに表示しない
エラーメッセージの内容に、データベースの種類やエラーの原因などはSQLインジェクション攻撃を行う上で有用な情報となるので、利用者のブラウザ上に表示させないように実装する。

-データベースに接続するアカウントに適切な権限。
データベースに接続する際に使用するアカウントの権限を必要最低限に設定する。

*1.2 OSコマンドイジェクション    </description>
    <dc:date>2011-04-28T15:08:09+09:00</dc:date>
    <utime>1303970889</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/53.html">
    <title>お金</title>
    <link>https://w.atwiki.jp/dynm7/pages/53.html</link>
    <description>
      *売上原価
売れた分に対応した原価
 ex)
 400円の商品を10個仕入れて、500円で8個売った。
 このときの売上原価は400*8=3200円

*粗利
おおざっぱな利益。粗利=売上高-売上原価。
 ex)
 上の例だと、粗利=500*8-3200=800円
粗利は売上総利益ともいう。

売上高のうち、粗利がどの程度を占めるのかを表すのが粗利率。

粗利率=粗利÷売上高
 ex)
 粗利率=800÷4000=0.2
 よって粗利率は20%

*営業利益
本業で稼いだ利益。営業利益=粗利-販売管理費。

*経常利益
毎期繰り返す事業活動の結果得られる利益。経常利益=営業利益+営業外収益-営業外費用

営業外損益とは主に金融面における損益のこと。

*特別損益
臨時的・例外的な取引によって生じた損益。災害やリストラで発生した費用など。

*当期利益
税引前利益=経常利益+特別利益-特別損失。

当期利益=税引前利益-法人税など+調整

*減価償却
買った資産を一度に費用にしないで毎年少しずつ費用に分けること。    </description>
    <dc:date>2011-04-25T12:00:22+09:00</dc:date>
    <utime>1303700422</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/52.html">
    <title>JavaScriptの基本</title>
    <link>https://w.atwiki.jp/dynm7/pages/52.html</link>
    <description>
      *文字列や数字を表示する。
 document.write(表示する内容)
「document」が文書自体を表すオブジェクトであり、「write」はそのオブジェクトのメソッド。

引数の中身は計算式やHTMLタグを記述することが可能。
----
*アラートダイアログを表示する。
 window.alert(表示する内容)
「window」は省略が可能。\nによってダイアログ内で改行することができる。
ただしHTMLタグを利用することはできない。
----
*変数、配列、演算子
通常、変数はグローバル変数として扱われるが、関数のパラメータや関数内で「var」を使い宣言した変数はローカル変数として扱われる。

以下のメソッドを使って、入力した2つの値の和を表示するスクリプトを書いてみよう。
 window.prompt(&quot;説明&quot;,&quot;初期値&quot;)
 parseInt(&quot;文字列&quot;)
 parseFloat(&quot;文字列&quot;)

配列の宣言方法は以下の通り
 配列名 = new Array()
 配列名 = new Array(a,b,c...)
 配列名 = [a,b,c...]
 配列名 = new Array(n)
色々な配列の宣言方法を試して、配列の内容を表示するスクリプトを書いてみよう。

値が代入されていない要素は[undefined]となる。
----
*数学関数Mathオブジェクト
メソッド
 abs(数値) //絶対値を得る。
 acos(数値) //アークコサイン
 asin(数値) //アークサイン
 atan(数値) //アークタンジェント
 ceil(数値) //切り上げ
 floor(数値) //切り下げ
 cos(数値) //コサイン
 sin(数値) //サイン
 tan(数値) //タンジェント
 exp(数値) //eのべき乗
 log(数値) //数値の自然対数
 max(数値,数値) //比較し大きい方を返す
 min(数値,数値) //比較し小さい方を返す
 pow(数値,数値) //べき乗計算
 round(数値) //四捨五入
 sqrt(数値) //数値の平方根を返す
プロパティ
 E //自然対数の底
 LN2 //2の自然対数
 LN1    </description>
    <dc:date>2011-04-14T10:39:08+09:00</dc:date>
    <utime>1302745148</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/51.html">
    <title>JavaScript</title>
    <link>https://w.atwiki.jp/dynm7/pages/51.html</link>
    <description>
      *[[JavaScriptの基本]]    </description>
    <dc:date>2011-04-13T11:43:46+09:00</dc:date>
    <utime>1302662626</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/49.html">
    <title>第3章</title>
    <link>https://w.atwiki.jp/dynm7/pages/49.html</link>
    <description>
      =第3章 ネットワークインフラストラクチャ=
==3.1 ネットワークモデル==
*OSI参照モデル
OSI(Open Systems Interconnection/開放型システム間相互接続)

各ベンダの独自ネットワークプロトコルを相互接続するために開発されたプロトコル。

各レイヤの説明は省略する。

*DoDモデルとTCP/IP
プロセスアプリケーション層⇔アプリケーション(HTTP、FTP、SMTP、etc...)

Host to Host層⇔トランスポート(TCP、UDP)

インターネット層⇔インターネット(ICMP、IP、ARP)

ネットワークアクセス層⇔ネットワークインターフェース(ドライバ、PPP、NIC)

*ネットワークモデルとPDU名
PDU(Protocol Data Unit)とはNWモデルの各層でやりとりされる「制御情報」と「データ」の組み合わせのこと。

データリンクではフレーム、ネットワークではパケット、トランスポートではセグメントという。

DoDにおいては、ネットワークアクセス層ではフレーム、インターネット層ではデータグラム、Host to Host層ではTCPならばセグメント、UDPではパケットという。

またプロセスアプリケーション層ではTCP上位ではストリーム、UDP上位ではメッセージという。

*カプセル化した通信
通信を行うとき、送信側はアプリケーションが作ったデータに各層で制御情報(ヘッダ)を付加しカプセル化して送信する。

最終的に電気信号となって受信側へ送信される。受信側では電気信号を解析し数値データへと変換していく。

==3.2 ネットワークの設計要素と構成==
*Ethernet
10BASE-5は同軸ケーブルを利用したEthernet。バンパイヤタップによって10BASE-5とトランシーバーを接続する。

トランシーバからはAUIケーブルと呼ばれるケーブルによってパソコンに接続される。

この構造だと不正にトランシーバとバンパイヤタップを使うことによりデータを盗聴できる場合がある。

対策としては目視でネットワークケーブルを監視したり、TDR(Time Domain Reflectometer)を使って検査する方法が挙げ    </description>
    <dc:date>2011-04-25T15:22:48+09:00</dc:date>
    <utime>1303712568</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/48.html">
    <title>CompTIA Security</title>
    <link>https://w.atwiki.jp/dynm7/pages/48.html</link>
    <description>
      *[[第1章]]
*[[第2章]]
*[[第3章]]
*[[第4章]]
*[[第5章]]
*[[第6章]]
*[[第7章]]
*[[第8章]]    </description>
    <dc:date>2011-04-04T20:20:09+09:00</dc:date>
    <utime>1301916009</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/47.html">
    <title>8th-Day</title>
    <link>https://w.atwiki.jp/dynm7/pages/47.html</link>
    <description>
      ==マウスコントロール==
マウスからの3バイトの割込み情報を格納するバッファを用意。(char型*3)

main解読

マウスデーコード→フェーズ1では1番目、フェーズ2では2番目、フェーズ3では3番目を格納する。

ここでフェーズ3で各情報を加工する。

まずボタン情報は1番目に入っている。ボタン上方は1番目の下位3ビットに含まれているので、0x07でマスクして下位3ビットをとりだす。

xとyについては2番目と3番目は生のまま。しかし1番目の5ビット、6ビット目が1である場合はxとyの上位3バイトは1を入れる。    </description>
    <dc:date>2011-04-03T19:02:32+09:00</dc:date>
    <utime>1301824952</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/46.html">
    <title>TIPS</title>
    <link>https://w.atwiki.jp/dynm7/pages/46.html</link>
    <description>
      ==コネクション型通信==
相手とのコネクションをネゴシエーションし、制御情報をやりとりしながら通信する。

オーバヘッドが大きいが信頼性は高い。TCPはコネクション型。

==コネクションレス型通信==
データをぶん投げる。UDPはコネクションレス型

==IPアドレス==
ネットワーク部とホスト部に分かれており、パケットの送信時にはまずネットワークアドレスを元にネットワークに届け、そのごホストアドレスを参考に宛先コンピュータに届ける。

*クラスA(0.0.0.0～127.255.255.255)
最初の8bitがネットワークアドレス、残り24bitがホストアドレス。

ただしネットワークアドレスの最上位ビットはクラス識別のため0で固定。

*クラスB(128.0.0.0～191.255.255.255)
最初の16bitがネットワークアドレス、残り16bitがホストアドレス。

ただしネットワークアドレスの最上位ビットはクラス識別のため10で固定。

*クラスC(192.0.0.0～223.255.255.255)
最初の24bitがネットワークアドレス、残り8bitがホストアドレス。

ただしネットワークアドレスの最上位ビットはクラス識別のため110で固定。

*クラスD(224.0.0.0～239.255.255.255)
IPマルチキャスト用アドレス。識別のため最上位ビットは1110

*クラスE(240.0.0.0～255.255.255.255)
識別のため最上位ビットは1111。実験用として予約されているアドレス。

*予約されたIPアドレス
**ホストアドレス
ホストアドレスがすべて0、もしくは1であるIPアドレス。
**プライベートIPアドレス
 クラスA：10.0.0.0～10.255.255.255
 クラスB：172.16.0.0～172.31.255.255
 クラスC：192.168.0.0～192.168.255.255

==サブネットマスク==
1つのネットワークアドレスを複数のネットワークアドレスに分割するためのフィルタのようなもの。

*デフォルトサブネットマスク
 クラスA：255.0.0.0
 クラスB：255.255.0.0
     </description>
    <dc:date>2011-03-28T15:48:57+09:00</dc:date>
    <utime>1301294937</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/45.html">
    <title>TCP/IP-トランスポート層</title>
    <link>https://w.atwiki.jp/dynm7/pages/45.html</link>
    <description>
      *TCPの役割
アプリケーション層からデータを渡され、それをセグメント単位に分割する。

各セグメントには識別子としてシーケンス番号が付与される。

シーケンス番号は受信側のトランスポート層でのセグメント結合に使用される。シーケンス番号を付与する意義は、受信側では順番通りにパケットが届くとは限らないため。

TCPでは確認応答番号により再送要求が可能であるため、信頼性を確保した通信を行うことができ
る。

-TCPのヘッダ構造
--送信元ポート番号(16bit)：送信元のアプリケーションを識別する番号。16bitなので0を除いた1～65535を指定できる。
--宛先ポート番号(16bit)：宛先のアプリケーションを識別する番号。16bitなので0を除いた1～65535を指定できる。
--シーケンス番号(32bit)：送信するデータに順序を定義するための番号。送信するデータ1バイト毎にシーケンス番号を1ずつ増やす。
--確認応答番号(32bit)：受信したデータに対して、どこまで受信できたのかを示す番号。受信したデータ位置のシーケンス番号+1をセットする。
--ヘッダ長(4bit)：
--予約済み(6bit)：
--コードビット(6bit)：URG,ACK,PSH,RST,SYN,FIN
--ウィンドウサイズ(16bit)：受信側のウィンドウサイズを相手に伝えるために利用されるフィールド。単位はバイト。
--チェックサム(16bit)：TCPパケットの整合性を検査するための検査用データが入るフィールド。
--緊急ポインタ(16bit)：緊急データの場所を表す。

-通信の確立


*UDPの役割
UDPには確認応答番号などの信頼性を確保する機能は無い。しかしながら余計な機能が無いため、リアルタイム通信などに利用されている。

-UDPヘッダの構造
--送信元ポート番号(16bit)：送信元のアプリケーションを識別する番号。16bitなので0を除いた1～65535を指定できる。
--宛先ポート番号(16bit)：宛先のアプリケーションを識別する番号。16bitなので0を除いた1～65535を指定できる。
--ヘッダ長(4bit)：
--チェックサム(16bit)：    </description>
    <dc:date>2011-04-25T16:24:01+09:00</dc:date>
    <utime>1303716241</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/dynm7/pages/44.html">
    <title>7th-Day</title>
    <link>https://w.atwiki.jp/dynm7/pages/44.html</link>
    <description>
      ==PIC初期化==
PIC(Programmable Interrupt Controller)とは、通常CPUでは割込みを1つしか扱うことができないので、（すなわちCPUの一つのピンに一つの装置しかつなげないということ）

それを解決するために付加した補助チップであり、「設定可能な割込みコントローラー」。

PICには8つのIRQを扱うことが出来る。またIRQ2にはスレーブにつながって計15個の装置を観測できる。

PIC0はマスターPIC、PIC1はスレーブPIC。

IMR(Interrupt Mask Register)はPIC内の割込み目隠しレジスタと呼ばれる8ビットレジスタ。

それぞれのビットがIRQ信号のそれぞれのピンに対応している。IMRが1になっているビットは対応するIRQ信号を無視する。

これはつながってない装置のIRQを無視したり、割り込みに関する設定をいじるときに反応する。


ICW(Initial Control Word)は初期化制御データ。ICW1とICW4はPICの基板上の配置、割込み信号の電気特性について。

ICW3はマスタとスレーブ間の接続についての設定。マスタに対しては何番のIRQにスレーブがつながっているかを示す。ここでは2番につながっているので00000100がセットされる。

スレーブの方はマスタの何番につながっているかを示す。

ICW2はよくわからん。IRQをどの割込み番号としてCPUに通知するかを決める？？？

==割込みハンドラ作成==
割込み発生時に行う処理が記述されている。まずはアセンブラ側の記述から見ていく。

レジスタの内容をスタックに格納しておき、割込みハンドラをコールする。割込みハンドラはC言語で記述。

harib03eのキーボード割込みは左上に黒い枠を作成し、そこに文字列を記述する。マウスも同様なはずなのだが…

ちなみにinit_gtdidt内で作成した割込みハンドラをIDTに登録しておくことを忘れない。

==キーコードの取得==
inthandler21のio_out8(PIC0_OCW2, 0x61)というのはIRQ1が発生したことをPICを通知する処理を行う。

基本的にOCW2に0x60+IRQ番号をout    </description>
    <dc:date>2011-04-03T14:49:45+09:00</dc:date>
    <utime>1301809785</utime>
  </item>
  </rdf:RDF>
