我想在每个网页上禁用使用firebug。有时,我们嵌入重要 我的ui小部件中的键或id。服务器端的一些方法将采用这些密钥进行处理。所以,有人可以通过firebug进行编辑。这可能导致数据库的错误数据更新或网页中显示的错误数据。对于安全选项,我想禁用使用firebug或浏览器的其他开发人员工具。作为 GoogleChrome 的主页,当我在其中打开firebug时,我想显示如下错误消息..
我该怎么做呢? 例如:我想用JavaScript验证我的表单数据,或者使用JQuery Form Validation来验证表单数据 没关系。但是,当我使用firebug和删除错误消息的元素将成为验证此表单。如何防止它!任何建议将不胜感激。 真的,我不仅意味着firebug,还意味着其他开发人员工具,插件,插件。 我的问题要点是如何禁用它们。 Chrome浏览器主页处理和验证表单实例中的FireBug是我想要做的示例。
答案 0 :(得分:7)
TL; DR没有办法以这种方式实现任何类型的安全性。您可以从不信任客户。
最后,浏览器只是下载一堆HTML和JavaScript文件(以及图像和CSS等)并在窗口中执行/呈现它们,遵循如何显示HTML和CSS的规范。如何执行JavaScript。 Internet浏览器不会像下载文档那样将文件保存到磁盘,但实际上并没有什么不同。 (好吧,它是下载文件,而不是在你的“Documents”文件夹中)它只是在浏览网页的环境中做所有事情,以方便用户查看格式良好的页面,如反对HTML标记。但这些文件只是文件,可以在浏览器上下文之外生存(即读取和编辑)。
因此,如果您的某个JavaScript文件中包含任何类型的密钥,则禁止Firebug Lite不会阻止任何人访问密钥,因为我可以使用curl或{{{{}}等工具下载该文件3}}并在文本编辑器中阅读它。请记住,在浏览器中完成的任何可以通过curl“手动”完成。
让我们假设你有办法通过一些JavaScript禁用你网页中的Firebug Lite。我总是可以使用某种自定义浏览器,其行为与浏览器完全相同,只是它不会执行该特定代码。浏览器将执行为页面提供的所有代码,这是一种约定,但技术上没有任何东西阻止它被选择性。 (许多浏览器扩展实际上使它们变得有选择性。想到AdBlock)
不要误解我的意思:表单中的客户端验证非常有用且方便,但永远不会替换服务器端验证。您需要编写服务器端代码,以便为所有查询验证用户的身份(通常通过cookie),并且只有在该用户具有适当权限时才执行查询。 (你当然也想检查输入值的有效性)
答案 1 :(得分:5)
无法在用户的浏览器中远程禁用或影响插件。能够这样做将代表一个大规模安全漏洞。有一些方法可以检测他们是否使用adblock,但除此之外,你需要解决这些插件,而不是试图打败它们。
就我而言,网络编程的第一条规则是从不信任用户输入。无论您在客户端做什么,聪明且坚定的用户总是能够找到破坏您的网站,发送无效数据等的方法。为此:
在浏览器中验证,但在服务器上验证。所有 有人要做的就是禁用javascript和你的客户端 验证将不会执行。或者,如果他们非常坚定,他们 可以在本地保存html文件的副本,编辑出那些位 阻止他们做他们想做的事,然后加载他们的 在浏览器中拥有自己的版本并从中提交。你不能 防止这种情况发生,所以你必须通过验证来解决这个问题 在你做任何事情之前,在服务器上输入所有内容。
不要将未加密的敏感数据放入浏览器中。即使它是 在隐藏的字段中,他们可以再次进入代码,读取/更改它,以及 然后再提交自己的版本。如果可能,缓存这样的 服务器上的数据。如果不可能,请将其提供给加密的用户, 所以,即使他们能看到价值,对他们来说也毫无意义。
以这种方式看待:浏览器验证是为了用户的利益,因此他们不会浪费带宽;服务器验证是为了系统的好处,以确保您不接受无效数据。
仅实例,如果您正在为没有理由做任何这些事情的专业客户开发私有应用程序,那么您可以逃避不做这些事情。即便如此,你应该养成在服务器上验证输入的习惯。因此,您构建的内容或期望值并不重要,您应该始终在两个地方,客户端和服务器进行验证。
答案 2 :(得分:3)
让我们对此问题有实际答案,例如,某些网页无法运行Chrome扩展程序。硬编码的原因:
Chrome扩展程序无法触及Chrome网上应用店页面。在Chromium源代码中,ChromeExtensionsClient::IsScriptableURL。引用:
// The gallery is special-cased as a restricted URL for scripting to prevent
// access to special JS bindings we expose to the gallery (and avoid things
// like extensions removing the "report abuse" link).
可以通过命令行标志覆盖此限制:--allow-scripting-gallery
问题本身的例外:内容脚本不允许使用新标签页,因为它位于chrome://
URI方案上。在源代码中,您可以看到ChromeExtensionsClient::GetPermittedChromeSchemeHosts
:
// Regular extensions are only allowed access to chrome://favicon
扩展程序可以覆盖新的标签页,但不会将其脚本注入其中。
我将此作为社区维基离开,因此人们可以自由添加此答案。
正如其他答案所述,不允许在常规网页上进行扩展是一场无法获胜的军备竞赛。
答案 3 :(得分:0)
第二条规则。您不能阻止您的脚本被黑客入侵,但您应该尽可能地使其成功。
现在FB 2提供了一个漂亮的打印按钮,而你正在努力工作/使用uglifier。所有的技巧和噱头你都无法隐藏。如果您在线取走黑客或外行玩具,为什么关闭或禁止调试器应该没有帮助。
顺便说一下,所有答案都不在话题。提问者是国王。
也许我回来了。
再次回来:我发现控制台ins ff的数量与(21)或没有(18)firebug不同。但是控制台没有属性长度。做一个for。
if(console.hasOwnProperty('exception')){
alert('please switch off FB');
}
在那次小棉签战争之后,我发现很漂亮solution of Keith Chadwick。 Devtools在匿名函数方面存在问题。所以他的想法是将你的脚本包装在:
(function(){***your script***}());
并在加载时调用以下函数并调整大小:
var test=function(){
if(document.getElementsByTagName('script').length>1
|| (screen.availHeight-window.innerHeight)>150){
window.location.href='securityabort.html';
}
};
这不会使调试变得不可能(我知道)但更难。