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 從網頁填就好了 ...
Hinet RadioMSN log merger
新增留言
Trackback this post | 訂閱這則留言的 RSS Feed