不安全的Flash密碼驗做法


Tek 發表



直接把密碼寫在SWF檔案的危險

SWF 檔案 (ShockWave File) 是經由 Macromedia Flash 工具所創造出來的網頁/電影/遊戲動畫程式,也可以讓設計者建立一個與JavaScript 或VBScript 同樣原理的密碼認證程式控制瀏覽者登入• SWF 在這方面的保護優勢在於任何瀏覽者不會直接在網頁的原始碼文件看到密碼,但這也同時是嚴重導致一些 Flash 設計者安全誤會的原因•因為事實上直接把密碼寫在SWF檔案的保護還是一樣脆弱,有心的瀏覽者只需要用到一個 hex 編輯器就這樣可以照樣找出原密碼•

【錯誤示範】一般人設計SWF檔密碼認證的簡要步驟

1. 點選文字工具

2. 將類型轉換為 "Input Text"

3. 撰寫類似以下的Script:

if (_root.name == "test") {
_root.output = "Correct";
} else {
_root.output = "Incorrect password";
}

4. 儲存,送出,上線

【問題導致】瀏覽者照樣看穿密碼

其實這很簡單,網路上有需多這種免費hex編輯器可以下載,你只需要讓工具去開啟這一種SWF檔案開啟即可• 依照上面的SWF檔案,您會得到這樣的解讀結果(以下只是其中一部份):

0012B0 3F 00 06 00 5F 72 6F 6F 74 00 6E 61 6D 65 00 74 ?..._root.name.t
0012C0 65 73 74 00 6F 75 74 70 75 74 00 3F 3F 3F 3F 21 est.output.????!

找出來的密碼: test

【編輯器】用WSH(VBScript)寫的hexcimal 編輯器

Windows 使用者請將以下程式碼複製到筆記本去,並更改檔案名稱為 hexeditor.vbs 即可執行•


Dim f, a, s, n, t, c, r, k
set f = wscript.arguments
If f.Count Then
s = f.item(0)
Else
s = InputBox("輸入任何一個路逕(任何檔案) :")
If s = "" Then WScript.Quit(1)
End If
Set f = CreateObject("Scripting.FileSystemObject")
If Not f.FileExists(s) Then
MsgBox "File not found : " & s, 16
WScript.Quit(2)
End If
t = f.GetTempName
Set c = f.CreateTextFile(t, -1)
Set a = f.OpenTextFile(s, 1)
c.WriteLine(s & vbCRLF & " 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F")
n = 0
While Not a.AtEndOfStream
If (n Mod 16) = 0 Then
s = Right("00000" & Hex(n), 6)
r = " "
End If
k = Asc(a.Read(1))
If k > 31 And k < 128 Then r = r & Chr(k) Else r = r & "."
s = s & " " & Right("0" & Hex(k), 2)
n = n + 1
If ((n Mod 16) = 0) or a.AtEndOfStream Then c.WriteLine(s) & Space(((n Mod 16)>0)*((n Mod 16)*3-48)) & r
Wend
a.Close
c.Close
Set c = WScript.CreateObject("WScript.Shell")
c.Run "notepad.exe " & t,3 ,-1
f.DeleteFile t

最後更新日期: 7/22/2003 11:22:01 PM