名義上,沒有。 Greasemonkey腳本在您的PC之外不會比其他硬盤上未加密的文件更清晰可見。
這就是說,有幾件事情要記住:
使用密碼實用程序。
使用旨在儘可能使用並保護密碼的可信實用程序。如前所述,LastPass非常受歡迎。我也用Secure Login效果很好。
無可否認,這些實用程序不適用於任何情況,因爲許多網站堅持自己的登錄頁面/系統變體。所以,我個人使用Greasemonkey腳本登錄到一些低風險的網站。
切勿對敏感網站使用自動登錄功能。 如果您使用銀行,信用卡,重要的工作數據庫等的腳本有人將有一天坐在你的電腦上,他們將訪問該網站(並自動登錄),並且壞東西會發生。銀行就可以了。
現在,我知道有些人會(愚蠢地)忽略這一點。但是,如果你這樣做了,至少要用熱鍵或熱鍵序列觸發登錄 - 永遠不要全自動。
當心unsafeWindow
。
Greasemonkey腳本曾經容易受到針對unsafeWindow
的攻擊。雖然我認爲此漏洞已由Firefox版本4(舊的漏洞利用配方肯定無法與現代GM + FF一起使用)關閉,但unsafeWindow
漏洞利用將允許一個受損的網頁查看部分腳本源並使用GM_
功能。
因此,尤其對於登錄腳本,請勿使用unsafeWindow
。
千萬不要在任何源文件中包含真實密碼。
不要讓窺視或惡意軟件很容易得到您的密碼!幾十年來,這一直是一條輕鬆的道路,但人們仍然可能因此而被燒燬 - 可能每天都有。
不要以明文形式存儲密碼。,並且不要使用「密碼」和「用戶名」作爲變量名稱。 這不會阻止一個確定的壞人,但它會減慢「誠實」的窺探和腳本小子。
這裏是Greasemonkey的腳本框架我兩頁,我自動登錄(都是論壇,低風險,低靈敏度)上使用。
用戶名和密碼存儲在瀏覽器首選項數據庫中(通過about:config
可見),而不是腳本源。它們被輕度加密以減緩窺探。
第一次運行腳本時,它會提示輸入隨機密鑰和用戶名和密碼。之後,可以通過Greasemonkey上下文菜單更改用戶名和密碼。
// ==UserScript==
// @name _Autologin, sensitive info framework
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://crypto.stanford.edu/sjcl/sjcl.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// ==/UserScript==
var encKey = GM_getValue ("encKey", "");
var usr = GM_getValue ("lognUsr", "");
var pword = GM_getValue ("lognPwd", "");
if (! encKey) {
encKey = prompt (
'Script key not set for ' + location.hostname + '. Please enter a random string:',
''
);
GM_setValue ("encKey", encKey);
usr = pword = ""; // New key makes prev stored values (if any) unable to decode.
}
usr = decodeOrPrompt (usr, "U-name", "lognUsr");
pword = decodeOrPrompt (pword, "P-word", "lognPwd");
function decodeOrPrompt (targVar, userPrompt, setValVarName) {
if (targVar) {
targVar = unStoreAndDecrypt (targVar);
}
else {
targVar = prompt (
userPrompt + ' not set for ' + location.hostname + '. Please enter it now:',
''
);
GM_setValue (setValVarName, encryptAndStore (targVar));
}
return targVar;
}
function encryptAndStore (clearText) {
return JSON.stringify (sjcl.encrypt (encKey, clearText));
}
function unStoreAndDecrypt (jsonObj) {
return sjcl.decrypt (encKey, JSON.parse (jsonObj));
}
//-- Add menu commands that will allow U and P to be changed.
GM_registerMenuCommand ("Change Username", changeUsername);
GM_registerMenuCommand ("Change Password", changePassword);
function changeUsername() {
promptAndChangeStoredValue (usr, "U-name", "lognUsr");
}
function changePassword() {
promptAndChangeStoredValue (pword, "P-word", "lognPwd");
}
function promptAndChangeStoredValue (targVar, userPrompt, setValVarName) {
targVar = prompt (
'Change ' + userPrompt + ' for ' + location.hostname + ':',
targVar
);
GM_setValue (setValVarName, encryptAndStore (targVar));
}
/*-- These next 3 lines are for debug/edification.
Remove or comment out of the final script.
*/
console.log ("Script start.");
console.log ("usr: ", usr);
console.log ("pword: ", pword);
// ADD YOUR CODE TO SET THE USERNAME AND PASSWORD ON THE LOGIN PAGE, HERE.
https://lastpass.com/? – user113215 2013-02-20 02:58:52
即使沒有人能夠看到它,一般也不是一個好主意。 – 2013-02-20 02:59:51
@ user113215可以通過JavaScript插入Lastpass密碼嗎? – user2089518 2013-02-20 03:11:32