- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这是一个愚蠢的问题,请原谅我。我不熟悉浏览器脚本的处理方式。
我正在编写一个简短的 Greasemonkey 脚本,该脚本涉及自动登录网站,这当然涉及插入我的密码。我原本打算只在脚本本身中包含我的密码,但我担心如果其他人可以看到我的脚本,他们也会看到我的密码。
所以我的问题是,除了我的浏览器和本地 PC 之外,任何人/任何事物都可以看到我的脚本吗?我不是在谈论任何其他人使用我的计算机,而是指任何人从网络上的其他地方“探测”或以其他方式检查我的浏览器。
如果是这样,我该如何存储我的密码,以便在不牺牲我的安全性的情况下自动插入密码?
最佳答案
名义上,没有。 Greasemonkey 脚本在您的 PC 外部并不比您硬盘上的任何其他未加密文件更可见。
也就是说,有几点需要牢记:
改用密码实用程序。
尽可能使用旨在处理和保护密码的可信实用程序。如前所述,LastPass很受欢迎。我也用过Secure Login效果不错。
诚然,这些实用程序并非适用于所有情况,因为许多站点坚持使用自己的登录页面/系统变体。因此,我个人确实使用 Greasemonkey 脚本登录了一些低风险网站。
切勿对敏感网站使用自动登录。如果您为银行、信用卡、重要的工作数据库等使用脚本。某天有人会坐在您的计算机前,他们会访问该网站(并且会自动登录),坏事将会发生。相信它。
现在,我知道有些人会(愚蠢地)忽略这一点。但是,如果您这样做,至少要让登录由热键或热键序列触发——永远不会是全自动的。
当心 unsafeWindow
。
Greasemonkey 脚本曾经容易受到针对 unsafeWindow
的攻击.虽然我相信这个漏洞已被 Firefox 版本 4 关闭(旧的漏洞利用方法肯定不适用于现代 GM+FF),但 unsafeWindow
漏洞利用将允许受感染的网络页面以查看部分脚本源代码并使用 GM_
函数。
因此,尤其是对于登录脚本,不要使用 unsafeWindow
。
切勿在任何源文件中包含真实密码。
不要让窥探者或恶意软件轻易获取您的密码!几十年来,这一直是通往 pwn-dom 的一条简单途径,但人们仍然为此而焦头烂额——可能每天都是。
不要以明文形式存储密码。并且不要使用“密码”和“用户名”作为变量名。这不会阻止一个坚定的坏人,但会减慢“诚实”的窥探和脚本小子的速度。
下面是我在自动登录的两个页面(都是论坛,低风险,低敏感度)使用的Greasemonkey脚本框架。
用户名和密码存储在浏览器首选项数据库中(通过 about:config
可见),而不是脚本源。它们经过轻微加密以减慢窥探速度。
第一次运行脚本时,它会提示输入随 secret 钥以及用户名和密码。之后,可以通过 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.
关于javascript - 我的 Greasemonkey 脚本在我的 PC 之外是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14971563/
这个问题在这里已经有了答案: How to call Greasemonkey's GM_ functions from code that must run in the target page s
是否可以使用 Greasemonkey 脚本跨域存储数据?我想允许从使用相同 Greasemonkey 脚本的多个网站访问 Javascript 对象。 最佳答案 是的,这就是 GM_setvalue
我有一个简单的 Greasemonkey 脚本: // ==UserScript== // @name hello // @namespace http://www.webmonkey.com //
我想写一个非常简单的 greasemonkey 脚本,因为我讨厌“你确定吗?”我经常使用的网站上的 javascript 确认。我只是将它用于个人用途,不会发布它或任何东西。经过一番谷歌搜索后,我找到
这是一个有点奇怪的具体问题。 我正在编写一个可以跨十个域运行的 Greasemonkey 脚本。这些网站都具有相同的结构,但每个网站的域名不同。例如,脚本将运行: http://first-domai
我为一个域制作了一个greasemonkey脚本,现在如何让它只运行一次?就像每次访问域时它都会启动一样,我不希望这样。如何使其仅运行一次,然后删除自身或使其处于非事件状态? 谢谢。 最佳答案 如果您
我发现了很多类似的问题,但没有一个是平等的,也没有正确的解决方案。这是一个非常奇怪的问题。 我有一个简单的 Greasemonkey 脚本来测试这个问题: // ==UserScript== // @
我正在写一个 Greasemonkey 脚本,如何实现自动更新? 可以将脚本放入 GitHub 存储库并设置 @version数字? 然后......是一些自动的方式如何做到这一点?或者我必须手动检查
我现在正在研究用户脚本。我知道 Opera 与 Greasemonkey 脚本的许多方面兼容,但与其他方面不兼容。 GM functions emulation script在 Opera 上将需要,
最近在写一个用户脚本时,我发现页面上下文中的变量是可用的。 console.log(window) 在 Tampermonkey 和 Greasemonkey 中都没有导致错误。 我很困惑。全局变量不
看完后Greasemonkey recommends users to install Tampermonkey or Violentmonkey . 我已经安装了 Tampermonkey,现在我正
我在一堆 div 和一个表单中包含了一些输入值。我对 js 的了解有限,想在页面加载时使用油脂猴来设置值。 下面显示了获取值的 div 和表单的顺序。
有没有办法使用用户脚本将一些设置保存到不是 cookie 的本地计算机? 如果设置不是全局的,则很难制作用于多个域的用户脚本。 来自评论: "I am using scriptish " 。 最佳答案
我有一个带有以下元块的油脂猴脚本- // ==UserScript== // @name TDF Improved Dark Skin // @namespace TDF // @incl
我有用于Firefox的Greasemonkey脚本。该脚本包括此元块和一些代码行。 我想在服务器上更新脚本,然后自动更新浏览器的脚本。 requireSecureUpdates选项已关闭。 我究竟做
我正在按照说明将 Greasemonkey 脚本传输到 Tampermonkey:How to Transfer All Greasemonkey userscripts to Tampermonke
This question already has an answer here: My very simple Greasemonkey script is not running? (1个答案)
我需要在公司内部网站上托管用户脚本。我如何构建 href这样 Greasemonkey 会在点击链接时安装用户脚本吗? 我尝试了一个简单的 Install Userscript但是 Chrome 和
例如,在远程网页中,有如下代码片段: function foo(){ this.bar = 0; } 在我的油脂猴子脚本中,我想创建此类的对象: var _foo= unsafeWindow['fo
我想在文档中选择文本后调用函数。以下代码无效 var showSelWin = document.getElementById('innerwindow'); var txt = ' '; if (d
我是一名优秀的程序员,十分优秀!