我正在尝试阻止用户禁用样式。(我有一个很好的理由,所以请不要关于可访问性的帖子,因为99.99%的网站是完全可访问的。只是试着防止.1%的我的页面。如果你必须知道它是一个付费的网络课程,我不希望人们偷......很容易)。
我正在使用Jquery:
function cssCheck() {
if( ! $('#cssenabledcheck').is(':hidden') ) {
window.location.href = "www.somerandompage.com";
}
}
var styleCheck = setInterval(cssCheck, 500);
cssenebledcheck是一个空div,其样式设置为隐藏。逻辑是如果禁用样式,div将显示,样式检查将失败,从而将用户重定向到一个页面,告诉他们启用样式。令人惊讶的是即使在旧电脑上也没有内存密集,即使它每半秒持续运行一次。
我的问题是,一个人覆盖(注入)styleCheck变量有多容易,从而击败了我的支票?我如实地对黑客行为知之甚少,所以任何见解都会受到赞赏。
答案 0 :(得分:4)
像打开萤火虫一样简单并发布
clearInterval(styleCheck);
您不应该将setInterval
返回的值分配给变量,因此它将是不可清除的......但是他们可以重写cssCheck
方法。
使用匿名函数
可以避免这种情况setInterval( function(){...}, 500);
但是他们可以完全禁用javascript,并且没有任何关于这种情况的事情......
答案 1 :(得分:2)
这很容易(例如使用greasemonkey)。如果你真的想要隐藏某些东西,它不应该在页面上,期间。即使它是隐藏的,如果您使用浏览器的“查看源代码”选项,它仍然在源代码中。通过在一个浏览器上禁用JavaScript,您也可以轻松绕过这里所拥有的内容。
我认为正确的方法是在需要检索隐藏内容时对服务器进行Ajax调用,或者转到隐藏内容的其他页面。
答案 2 :(得分:2)
我可以使用萤火虫或者油脂来轻松禁用预防措施。任何类型的安全性都不能指望JavaScript。
答案 3 :(得分:1)
除了禁用JavaScript之外,还可以使用Firebug覆盖任何全局变量,例如styleCheck
。
答案 4 :(得分:1)
必须假定浏览器中运行的任何内容都在用户的控制之下。使用Firebug或GreaseMonkey甚至书签来改变javascript变量或删除javascript函数,甚至更容易改变样式(你可以指定一个覆盖网站样式表的个人样式表)是微不足道的。
如果您真的需要保护您的内容不被复制,您必须将其显示在Flash等插件中,其中环境受到更严格的控制。
答案 5 :(得分:0)
非常简单。在任何JS控制台中,键入:
cssCheck = function() {}
稍微强一些的版本就是把它放在一个难以覆盖的闭包中。
(function() {
function cssCheck() {
if( ! $('#cssenabledcheck').is(':hidden') ) {
window.location.href = "www.somerandompage.com";
}
}
var styleCheck = setInterval(cssCheck, 500);
})();
但仍然可以轻松地关闭javascript,甚至是curl
或wget
,或者右键单击查看源。没有一种强有力的方法可以做你想做的事。