它是多么容易打败这个Javascript预防措施

时间:2010-11-12 21:32:57

标签: javascript jquery coding-style code-injection

我正在尝试阻止用户禁用样式。(我有一个很好的理由,所以请不要关于可访问性的帖子,因为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变量有多容易,从而击败了我的支票?我如实地对黑客行为知之甚少,所以任何见解都会受到赞赏。

6 个答案:

答案 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,甚至是curlwget,或者右键单击查看源。没有一种强有力的方法可以做你想做的事。

相关问题