2010-05-16 14:21

三分鐘瞭解 XSS 攻擊原理

在看完酷壳寫的HTML 安全列表
突然很想寫一篇有關 XSS 的快速教學
讓更多人能瞭解何謂 XSS 安全漏洞


在瞭解 XSS 之前必須知道『網站登入(Session)』的原理

簡單的說當會員成功登入後 網站會給瀏覽器一個『令牌』
之後只要拿著這個『令牌』到網站上 就會被視為已經登入


再來下面是 XSS 最簡單的流程

簡單的說駭客透過 JavaScript 的程式碼將你的『令牌』偷走
透過這個『令牌』他也可以用你的身份順利登入網站
然後偷走你的相關資料(個人資料&交易資料)
然後再將這些資料賣給詐騙集團


相關的參考資料:
跨網站指令碼 - 維基百科
Cross-site Scripting (XSS) - OWASP
XSS(Cross Site Scripting)攻擊會讓您遺失Cookie中的資料
詳解XSS攻擊 - 網路攻防戰
HTML5 Security Cheatsheet
2010-05-15 20:14

[ActionScript] 用 LoadVars 讀取 CSV 格式

之前在寫用 LoadVars 讀取外部資訊時就很想直接讀取 CSV 格式的文件
在多次查找說明文件時才發現原來 onLoad 的事件前面還有一層 onData
直接處理 onData 的事件就可以取得檔案的原始資料

1,小明,2010-10-10
2,小王,2010-5-15
3,小白,2010-2-18


/*建立 Vars()*/
loadVars_1 = new LoadVars();

/*載入完成時所執行的程式*/
loadVars_1.onData = function(thedata:String) {
if (thedata == undefined) {
trace('資料載入失敗'); return;
}

/*以換行符號(\n)切割字串*/
var rows:Array = thedata.split("\n");
for(i=0; i<rows.length; i++){
/*以垂直符號(|)切割字串*/
rows[i]=rows[i].split(",");
}

trace(rows);/*顯示載入的資料*/
};

/*開始載入 load_vars.txt*/
loadVars_1.load("load_vars.txt");


參考資料:
Flash CS4 Professional ActionScript 2.0 - LoadVars
2010-05-15 13:05

Blogger 的標題加上 Facebook 官方的推文按鈕

之前協助 Rogan 在他的 Blogger 上加上Facebook 計數推文按鈕
才知到原來沒什麼人寫這樣的文章
今天也為自己的 Blogger 加上推文按鈕
順便寫下教學文


首先先到 Facebook 分享 選好需要的樣式
如果要選擇『自訂網址』請再輸入匡填入 data:post.url
所以你會看像這的 HTML 程式碼:

<a name="fb_share" type="button_count" share_url="data:post.url" href="http://www.facebook.com/sharer.php">分享</a>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>

再來要符合 Blogger 樣版語法必須在 share_url 前面加上 expr:
這樣我們才可以使用 data:post.url 這個樣版變數
再來為了讓 UI 有更清楚的標示再加上 title="分享至 Facebook" 這個屬性
最後修改就會像下面這樣:

<a name="fb_share" type="button_count" expr:share_url="data:post.url" href="http://www.facebook.com/sharer.php" title="分享至 Facebook">分享</a>
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>


打開『版面配置』→『修改HTML』
將『展開小裝置範本』打勾

找到 <h3 class='post-title entry-title'>及 </h3>
小技巧:所有的瀏覽器都有搜尋功能(Ctrl + F),只要搜尋 "post-title" 就可以找到這行了
將 <a name="fb_share"... 這行貼在 </h3> 前面

再去搜尋 </body> 這一行
將 <script src="http://static.ak.fb... 貼在 </body> 前面


這時候就可以先預覽如果沒問題就存檔
這時候應該會看起來會像這樣:


下面是其他人寫的教學:
Blogger + facebook分享計數按鈕
如何在Wordpress或Blogger加上【Google Buzz推文分享按鈕】?
2010-05-15 02:12

[Oracle] 基礎 Table Schema 指令


-- 建立資料表
CREATE TABLE table_name(
column1 NUMBER,
column2 CHAR,
column3 VARCHAR2,
column4 DATE,

-- 主鍵(PRIMARY KEY)
CONSTRAINT pk_table_name PRIMARY KEY(column1,column2),
-- 唯一鍵(UNIQUE KEY)
CONSTRAINT unique_table_name UNIQUE(column1,column2),
-- 外來鍵(FOREIGN KEY)
CONSTRAINT fk_table_name_column1
FOREIGN KEY(column1, column2)
REFERENCES parent_table(column1, column2)
[ON DELETE [CASCADE|SET NULL]]
-- 當參考鍵刪除時,相對應做的處理:
-- 預設 UPDATE No Action & DELETE No Action
-- ON DELETE CASCADE: 刪除參考鍵時連同刪除
-- ON DELETE SET NULL: 刪除參考鍵時將外鍵設為 NULL
);


-- 為資料表標示註釋
COMMENT ON TABLE table_name IS '資料表註釋';

-- 為資料欄位標示註釋
COMMENT ON COLUMN table_name.column1 IS '資料欄位註釋';


-- 附加主鍵(PRIMARY KEY)
ALTER TABLE table_name
ADD CONSTRAINT pk_table_name PRIMARY KEY(column1,column2);


-- 附加唯一鍵(UNIQUE KEY)
ALTER TABLE table_name
ADD CONSTRAINT unique_table_name UNIQUE(column1,column2);


-- 附加外來鍵(FOREIGN KEY)
ALTER TABLE table_name
ADD CONSTRAINT fk_table_name_column1
FOREIGN KEY(column1, column2)
REFERENCES parent_table(column1, column2)
[ON DELETE [CASCADE|SET NULL]];


-- 建立索引(Index)
CREATE [UNIQUE] INDEX idx_table_name ON table_name(column1, column2);

最近剛剛接觸 Oracle
很多觀念一時轉不過來
雖然 SQL 都大同小異
但就是這些被這些小異搞翻掉

整體架構跟 MySQL 差蠻多
只能說 MySQL 真的很容易上手
而且社群跟文獻都很多
所以要找參考資料比較容易

參考連結:
Oracle Commands
Oracle SQL
Oracle/PLSQL Topics
Oracle 開發筆記
Oracle基本语法集锦
oracel 數據完整性
2010-05-15 01:12

[Oracle] 快速建立使用者


CREATE USER user_name IDENTIFIED BY user_password; -- 建立使用者
GRANT dba TO user_name; -- 授與最大權力

為了這個簡單的指令上 google 找半天
最後還是去請教 MIS 的前輩
2010-05-10 21:02

Nokia Qt平台實作講堂

今天去參加這個活動
在講解人解說 QT 的架構後
想起四年前的專題會議中
Yuren』曾經分享過這個內容
雖然當時聽聽就過去了
沒想到今天會重新預見

QT 是一種 Base 在 C++ 上的程式架構
感覺像是一個 Framework
特長是跨平台與嵌入式系統
與 Java 不同的是它是以 compile 的方式做到跨平台
雖然這樣感覺還蠻麻煩的
但它的執行效率會比 Java 來得好

QT 在被 Nokia 收購後內容變得更豐富了
而且還有很好用的 SDK 一整個就感覺很快樂
雖然還沒想到要用來做什麼
但先記著吧!
2010-05-03 15:22

[ActionScript] 用 LoadVars 讀取外部資訊


vars=1|小明|2010-10-10
2|小王|2010-5-15
3|小白|2010-2-18


/*建立 Vars()*/
loadVars_1 = new LoadVars();

/*載入完成時所執行的程式*/
loadVars_1.onLoad = function() {
/*以換行符號(\n)切割字串*/
var rows = this.vars.split("\n");
for(i=0; i<rows.length; i++){
/*以垂直符號(|)切割字串*/
rows[i]=rows[i].split("|");
}

trace(rows);/*顯示載入的資料*/
};

/*開始載入 load_vars.txt*/
loadVars_1.load("load_vars.txt");



參考資料:
Flash CS4 Professional ActionScript 2.0 - LoadVars
2010-05-03 14:40

[ActionScript] 讀取 XML 資料格式

1.資料欄位以子節點方式載入與解析

<!-- load_1.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<xmltest>
<parentnode>
<id>1</id>
<name>小明</name>
<date>2010-10-10</date>
</parentnode>
<parentnode>
<id>2</id>
<name>小王</name>
<date>2010-5-15</date>
</parentnode>
</xmltest>


/*建立 XML()*/
LoadXml_1 = new XML();

/*捨棄只包含空白字元的文字節點*/
LoadXml_1.ignoreWhite=true;

/*載入完成時所執行的程式*/
LoadXml_1.onLoad = function(){
articleList = this.firstChild.childNodes;
var txt = "";
for (i=0; i<articleList.length; i++) {
elementList = articleList[i].childNodes;
for (j=0; j<elementList.length; j++) {
elementTag = elementList[j];
switch(elementTag.nodeName){
case "id":
txt += elementTag.firstChild.nodeValue+',';
break;
case "name":
txt += elementTag.firstChild.nodeValue+',';
break;
case "date":
txt += elementTag.firstChild.nodeValue+',';
break;
}
}
txt += '\n';
}

trace(txt); /*顯示載入的資料*/
}

/*開始載入 load_1.xml*/
LoadXml_1.load("load_1.xml");



2.資料欄位以屬性方式載入與解析

<!-- load_2.xml -->
<?xml version="1.0" encoding="utf-8"?>
<xmltest>
<parentnode id="1" name="小明" date="2010-10-10" />
<parentnode id="2" name="小王" date="2010-5-15" />
</xmltest>


/*建立 XML()*/
LoadXml_2 = new XML();

/*捨棄只包含空白字元的文字節點*/
LoadXml_2.ignoreWhite=true;

/*載入完成時所執行的程式*/
LoadXml_2.onLoad = function(success) {
var articleList = this.firstChild.childNodes;
var txt = "";
for (i=0; i<articleList.length; i++){
txt += articleList[i].attributes.id+','
+articleList[i].attributes.name+','
+articleList[i].attributes.call+','
+articleList[i].attributes.channel+"\n";
}

trace(txt);/*顯示載入的資料*/
};

/*開始載入 load_2.xml*/
LoadXml_2.load("load_2.xml");




參考資料:
Flash CS4 Professional ActionScript 2.0 - XML