Re: CGI encrypt?

2006-03-21 21:31

※ 引述《quincy (半調子程式殮骨師)》之銘言:
: 請問大師們....
: 目前有沒有能Encrypt在CGI程式上,像Zend一樣的程式呢?
: 因為我幫公司改的perl cgi moniter tool功能中,有能重新啟動apache服務的帳號,
: 目前我是把account/pass寫死在cgi裡面...雖說該monitor tool只有公司內網可以存取,
: 但總覺得好像還是太危險....= =”...CGI檔案一但一開就可以直接看到account/pass...
: 還是說有更Smart的方法...?
: 謝謝!

perlcc 可以把 perl source code 編成 binary
ex: perlcc -o test test.pl
然後 test 就可以直接跑.
但是它的支援還是很有限 , 尤其是掛了一堆 module 的情況下常常會 compile 不過

於是變通的方法是 perlcc -B
把它編成 perl 自己的 bytecode ... 有點像是 java 的 class 那樣
不過要這樣編的話 , 記得把帳號密碼拆一拆

ex: $passwd=”ooxx123″;
編完去看 bytecode , 會發現裡面就有個字串叫 “ooxx123″ XD
strings 一跑就出來了 ...
要插一些 garbage code 進去中間才不會那麼明顯 ...

另外 , perlfilter 也可以做類似的工作 ,
run “perldoc perlfilter” for detail.

不過我覺得用這些做法都會失去 perl 的便利性 ...
改天別人突然要改啥東西時
一開.... 啊勒 怎麼是亂碼
然後又不知道 source 在哪、之前怎麼編的 ... etc

如果只是不要讓別人看到 username/password 的方法 有很多啦 ....
提幾個我覺得比較可行的做法:

1. 把資料編碼一下放在別的檔案 要用時讀出來再解碼 ...
 但是如果用的演算法太簡單的話 , 看的到 source 的人
 還是可以依樣畫葫蘆去算出來 :p

 我記得你的需求好像是要用那組 username/password
 然後套 Expect 自動 ssh 到很多台機器做事情 ?
 所以這需要一個可逆的演算法 ... md5之類的就沒用了 ... 解不回來 ...

 那要不要考慮直接用 ssh public key authentication ?
 如果目的新機器上沒key的話 再噴訊息提示要先去生 :p

2. source 不動 , 把 account 資料放在另一個檔案編碼起來
 然後在 source 中去呼叫

 ex: define.pl

 ================
 $user=”ooxx”;
 $pass=”1234″;
 ================

 然後 perlcc -B -o define.pm define.pl

 在真正要 run 的檔案中 , 就加一行在前面

 use lib ‘/path_to_define.pm'; (如果兩個檔在同一目錄下就不用)
 use define ;

 (不過其實... 任何人只要看懂你的code...
 去call你的 pm 來用
 然後把變數噴出來也一樣看的到 XD )

3. 不要把 account info 寫死
 要跑時再讓 user 從網頁填就好了 ...


Perl 類別的文章 :
Hinet RadioMSN log merger

新增留言

*

*

Trackback this post  |  訂閱這則留言的 RSS Feed


各分類文章

最近的 20 篇文章