Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
击败这种Javascript预防措施有多容易_Javascript_Jquery_Coding Style_Code Injection - Fatal编程技术网

击败这种Javascript预防措施有多容易

击败这种Javascript预防措施有多容易,javascript,jquery,coding-style,code-injection,Javascript,Jquery,Coding Style,Code Injection,我正试图阻止用户禁用style(我有一个很好的理由这么做,所以请不要发布关于可访问性的帖子,因为我99.99%的网站是完全可访问的。只需尝试阻止我0.1%的页面。如果你必须知道这是一个付费网络课程,我不希望人们轻易窃取) Im使用Jquery: function cssCheck() { if( ! $('#cssenabledcheck').is(':hidden') ) { window.location.href = "www.somerandompage.com"; }

我正试图阻止用户禁用style(我有一个很好的理由这么做,所以请不要发布关于可访问性的帖子,因为我99.99%的网站是完全可访问的。只需尝试阻止我0.1%的页面。如果你必须知道这是一个付费网络课程,我不希望人们轻易窃取)

Im使用Jquery:

function cssCheck() {
  if( ! $('#cssenabledcheck').is(':hidden') ) {
    window.location.href = "www.somerandompage.com";
  }
}

var styleCheck = setInterval(cssCheck, 500);
cssenebledcheck是一个空div,样式设置为hidden。逻辑是,如果禁用样式,div将显示,并且样式检查将失败,从而将用户重定向到告诉他们启用样式的页面。令人惊讶的是,即使在旧电脑上,它也不会占用大量内存,即使它每半秒都会持续运行


我的问题是,一个人重写(注入)styleCheck变量,从而击败我的检查,有多容易?老实说,我对黑客技术知之甚少,因此任何见解都值得赞赏。

除了禁用JavaScript之外,还可以使用Firebug覆盖任何全局变量,如
styleCheck
,除了禁用JavaScript,可以使用Firebug覆盖任何全局变量,比如
styleCheck

,就像打开Firebug并发出命令一样简单

clearInterval(styleCheck);
但是,您不应该将
setInterval
返回值分配给变量,因此它将不可清除。。但是他们可以重写
cssCheck
方法

反过来,使用匿名函数可以避免这种情况

setInterval( function(){...}, 500);

但是他们可以完全禁用javascript,对此没有任何办法。

只需打开firebug并发布

clearInterval(styleCheck);
但是,您不应该将
setInterval
返回值分配给变量,因此它将不可清除。。但是他们可以重写
cssCheck
方法

反过来,使用匿名函数可以避免这种情况

setInterval( function(){...}, 500);
但是他们可以完全禁用javascript,对此没有任何办法。

这将非常简单(例如使用)。如果你真的想隐藏一些东西,它不应该出现在页面上,句号。即使它是隐藏的,如果您转到浏览器的“查看源代码”选项,它仍然在源代码中。通过禁用浏览器上的JavaScript,您也可以轻松绕过这里的内容

我认为正确的方法是在需要检索隐藏内容时,对服务器进行Ajax调用,或者转到另一个页面获取隐藏内容。

这将非常简单(例如使用)。如果你真的想隐藏一些东西,它不应该出现在页面上,句号。即使它是隐藏的,如果您转到浏览器的“查看源代码”选项,它仍然在源代码中。通过禁用浏览器上的JavaScript,您也可以轻松绕过这里的内容


我认为正确的方法是在需要检索隐藏内容时,对服务器进行Ajax调用,或者转到另一个页面查找隐藏内容。

我可以使用firebug或greasemonkey轻松禁用预防措施。JavaScript永远不能用于任何类型的安全性。

我可以使用firebug或greasemonkey轻松禁用预防措施。JavaScript永远不能用于任何类型的安全性。

极其简单。在任何JS控制台中,键入:

cssCheck = function() {}
一个稍微更健壮的版本是把它放在一个很难覆盖的闭包中

(function() {
  function cssCheck() {
    if( ! $('#cssenabledcheck').is(':hidden') ) {
      window.location.href = "www.somerandompage.com";
    }
  }

  var styleCheck = setInterval(cssCheck, 500);
})();

但是关闭javascript,甚至
curl
wget
,或者右键单击查看源代码,仍然很容易被打败。没有真正可靠的方法来做你想做的事。

非常简单。在任何JS控制台中,键入:

cssCheck = function() {}
一个稍微更健壮的版本是把它放在一个很难覆盖的闭包中

(function() {
  function cssCheck() {
    if( ! $('#cssenabledcheck').is(':hidden') ) {
      window.location.href = "www.somerandompage.com";
    }
  }

  var styleCheck = setInterval(cssCheck, 500);
})();

但是关闭javascript,甚至
curl
wget
,或者右键单击查看源代码,仍然很容易被打败。没有一种真正可靠的方法来做你想做的事情。

必须假设浏览器中运行的任何东西都在用户的控制之下。使用Firebug或GreaseMonkey甚至bookmarklet来更改javascript变量或删除javascript函数都很简单,甚至更容易更改样式(您可以指定一个覆盖站点样式表的个人样式表)


如果您确实需要保护您的内容不被复制,则必须将其显示在Flash之类的插件中,在该插件中,环境受到更严格的控制。

必须假定浏览器中运行的任何内容都在用户的控制下。使用Firebug或GreaseMonkey甚至bookmarklet来更改javascript变量或删除javascript函数都很简单,甚至更容易更改样式(您可以指定一个覆盖站点样式表的个人样式表)


如果您确实需要保护您的内容不被复制,则必须将其显示在Flash之类的插件中,在该插件中,环境受到更严格的控制。

您知道,通过先关闭JavaScript,然后关闭CSS,可以很容易地规避此问题。实际上,我得到了另一个在页面加载时检查的变量,以查看是否启用了js。由于你需要重新加载页面来禁用js,它将失败并迫使他们重新启用javascript。你不需要重新加载页面来禁用js。我现在在Firefox中就这么做了。如果他们知道自己在做什么,并且意识到函数指针存储为
styleCheck
,只需几秒钟就可以覆盖它。我相信你的理由是“好的”,但我有很好的理由永远不要去任何试图劫持我浏览器的网站。不管你的理由是什么:重新思考。尤其是因为你不能阻止人们关闭你的CSS。你知道这可以通过先关闭JavaScript,然后再关闭CSS来避免吗?事实上,我有另一个变量,在页面加载时检查js是否被启用。由于你必须重新加载页面以禁用js,它将失败并迫使他们重新启用javascript。