2010-11-12 2 views
1

Я пытаюсь запретить пользователю отключать стиль. (У меня есть хорошая причина, чтобы сделать это, поэтому, пожалуйста, никаких сообщений о доступности, поскольку 99,99% моего сайта полностью доступны Просто попытайтесь предотвратить 0,1% моих страниц, и если вы должны знать, что это платный веб-курс, который я не хочу, чтобы люди воровали ..... легко).Как легко это победить Это предупреждение о предотвращении Javascript

Im используя Jquery:

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

var styleCheck = setInterval(cssCheck, 500); 

cssenebledcheck является пустой DIV со стилем, установленным в скрытой. Логика заключается в том, что вы отключите стили, div покажет, и проверка стиля не удастся, таким образом перенаправляя пользователя на страницу, сообщающую им включить стили. Это удивительно неинтенсивно насыщенный даже на старых компьютерах, хотя он постоянно работает каждые полсекунды.

Вопрос в том, насколько легко человеку переопределить переменную styleCheck, тем самым нарушая мою проверку? Я правдиво знаю очень мало о взломе, поэтому любое понимание будет оценено по достоинству.

+7

Вы знаете, что это можно легко обойти, отключив JavaScript в первую очередь, и * затем * CSS? –

+0

На самом деле, я получил еще одну переменную, которая проверяется при загрузке страницы, чтобы увидеть, включена ли функция js. и поскольку ya нужно перезагрузить страницу, чтобы отключить js, она не удастся и заставит их повторно использовать javascript. – jimmy

+2

Вам не нужно перезагружать страницу, чтобы отключить JS. Я сделал это прямо сейчас в Firefox. – Domenic

ответ

4

Как просто, как открытие поджигателя и выдача

clearInterval(styleCheck); 

Вы не должны присвоить setInterval возвращаемого значения переменного, хотя, так что это будет не-Устраняемым .. Но они могли бы переписать метод cssCheck.

Это, в свою очередь, можно было бы избежать, используя анонимные функции

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

но они могут отключить JavaScript в целом, и нет ничего, чтобы сделать об этом случае ..

+0

черт возьми, что действительно sux. – jimmy

+0

@jimmy, я добавил подробнее .. –

+1

Нет необходимости в firebug, просто введите 'javascript: clearInterval (styleCheck)' в адресную строку любого браузера –

1

Помимо отключения JavaScript, можно просто использовать Firebug для переопределения любой глобальной переменной, такой как styleCheck.

+1

Итак, действительно ли нет верного способа устранить это? – jimmy

+0

, но, возможно, 'styleCheck' ** не ** глобальная переменная. @jimmy, держите его в скрытом объеме (некоторая анонимная функция) –

2

Было бы очень легко (используя, например, greasemonkey). Если вы действительно хотите, чтобы что-то было скрыто, оно не должно быть на странице, периоде. Даже если он скрыт, он все еще находится в источнике, если вы переходите к опции «Просмотр источника» в браузере toyour. То, что вы здесь, также легко обойти, отключив JavaScript в своем браузере.

Я думаю, что правильным способом сделать это было бы иметь вызов Ajax на сервер, когда вам нужно получить скрытый контент, либо это, либо перейти на другую страницу для скрытого контента.

+0

мой контент защищен php-сессией, однако я не хочу, чтобы люди легко отключили стили, а затем скопировали и вставляли весь платный контент. – jimmy

2

Я мог бы использовать firebug или greasemonkey, чтобы легко отключить превентивные меры. JavaScript никогда не может учитываться для какой-либо безопасности.

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, или просмотреть исходный код правой кнопкой мыши. На самом деле нет надежного способа делать то, что вы хотите.

+0

Черт, я мог избежать использования вспышки .... может быть, нет. – jimmy

1

Все, что работает в браузере, должно считаться находящимся под контролем пользователя.Тривиально использовать Firebug или GreaseMonkey или даже букмарклет, чтобы изменять переменные javascript или удалять функции javascript, и даже легче изменять стили (вы можете указать личную таблицу стилей, которая переопределит таблицу стилей сайта).

Если вам действительно нужно защитить свой контент от копирования, вам придется отображать его внутри плагина, такого как Flash, где среда более жестко контролируется.

+0

На самом деле я начал делать курс вспышкой ... но человеку это боль. О, вернемся к земле. – jimmy

+0

Вы можете поместить содержимое в PDF-файл с защитой от копирования. Они могут быть расколоты, но это остановит случайных «воров».Или вы можете динамически генерировать изображение, содержащее текст, хотя это может быть довольно болезненно для пользователей, которые хотят, скажем, увеличить размер шрифта. –

Смежные вопросы