2010-11-12 15 views
1

J'essaie d'empêcher un utilisateur de désactiver le style (j'ai une bonne raison de le faire, donc s'il vous plaît pas de messages sur l'accessibilité que 99.99% de mon site est totalement accessible Essayez juste d'empêcher sur .1% de mes pages et si vous devez savoir c'est un cours de Web payé que je ne veux pas que les gens volent ..... facilement).Comment est-il facile de battre cette mesure préventive

Im en utilisant Jquery:

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

var styleCheck = setInterval(cssCheck, 500); 

cssenebledcheck est un vide div avec un style Hidden. La logique est que si vous désactivez les styles, la div s'affichera et la vérification du style échouera, redirigeant ainsi l'utilisateur vers une page lui indiquant d'activer les styles. Il est étonnamment non-mémoire même sur les vieux ordinateurs, même si elle est continuellement en cours d'exécution toutes les demi-secondes.

Ma question est la suivante: est-il facile pour une personne de surcharger (injecter) la variable styleCheck, en battant ainsi mon chèque? Je connais très peu de choses sur le piratage, donc toute idée serait appréciée.

+7

Vous êtes conscient que cela peut être contourné facilement en désactivant JavaScript d'abord, et * puis * CSS? –

+0

En fait, j'ai une autre variable qui est vérifiée au chargement de la page pour voir si js est activé. et puisque vous devez recharger la page pour désactiver js, il échouera et les obligera à ré-activer javascript. – jimmy

+2

Vous n'avez pas besoin de recharger la page pour désactiver JS. Je l'ai fait maintenant dans Firefox. – Domenic

Répondre

4

Aussi facile que l'ouverture Firebug et l'émission

clearInterval(styleCheck); 

Vous ne devez pas assigner la setInterval valeur retournée à une variable, donc il serait un éliminables .. Mais ils pourraient réécrire la méthode cssCheck.

Cela pourrait être évité en utilisant une fonction anonyme

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

mais ils pourraient désactiver javascript tout à fait, et il n'y a rien à faire de ce cas ..

+0

putain que vraiment sux. – jimmy

+0

@jimmy, j'ai ajouté plus d'informations .. –

+1

Pas besoin de firebug, il suffit de taper 'javascript: clearInterval (styleCheck)' dans la barre d'adresse de tout navigateur –

1

Outre la désactivation de JavaScript, il suffit d'utiliser Firebug pour remplacer toute variable globale telle que styleCheck.

+1

Donc, il n'y a vraiment pas un moyen sûr de résoudre ce problème? – jimmy

+0

mais peut-être 'styleCheck' n'est pas ** ** une variable globale. @jimmy, gardez-le dans une portée cachée (certaines fonctions anonymes préférablement) –

2

Il serait très facile (en utilisant greasemonkey par exemple). Si vous voulez vraiment quelque chose à cacher, il ne devrait pas être sur la page, point final. Même s'il est caché, il est toujours dans la source si vous allez voir l'option "View Source" de votre navigateur. Ce que vous avez ici est également facilement contourné en désactivant JavaScript sur son navigateur.

Je pense que la meilleure façon de le faire serait d'avoir un appel Ajax au serveur lorsque vous avez besoin de récupérer le contenu caché, que ce soit ou aller à une autre page pour le contenu caché.

+0

mon contenu est protégé par une session php, mais je ne veux pas que les gens de désactiver facilement les styles, puis copier et coller tout le contenu payant. – jimmy

2

Je pourrais utiliser firebug ou greasemonkey pour désactiver facilement les mesures préventives. JavaScript ne peut jamais compter sur aucune sorte de sécurité.

0

Redicilement facile. Dans une console JS, tapez:

cssCheck = function() {} 

Une version légèrement plus robuste serait de mettre dans une fermeture où il est difficile de passer outre.

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

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

Mais peut encore facilement tourner hors javascript battus, ou même curl ou wget, ou voir la source de clic droit. Il n'y a pas vraiment de moyen robuste de faire ce que vous voulez.

+0

Merde pensé que je pourrais éviter d'utiliser flash .... peut-être pas. – jimmy

1

Tout ce qui s'exécute dans le navigateur doit être supposé être sous le contrôle de l'utilisateur.Il est trivial d'utiliser Firebug ou GreaseMonkey ou même un bookmarklet pour changer les variables javascript ou supprimer les fonctions javascript, et encore plus facile de modifier les styles (vous pouvez spécifier une feuille de style personnelle qui remplacera la feuille de style du site).

Si vous avez vraiment besoin de protéger votre contenu de la copie, vous devrez l'afficher dans un plugin tel que Flash, où l'environnement est plus étroitement contrôlé.

+0

J'ai effectivement commencé à faire le cours en flash ... mais l'homme c'est une douleur. Oh bien retour à adobe terre. – jimmy

+0

Vous pouvez mettre le contenu dans un fichier PDF protégé contre la copie. Ceux-ci peuvent certainement être craqués mais cela arrêtera les "voleurs" occasionnels.Ou vous pouvez générer dynamiquement une image contenant le texte, bien que cela puisse être assez pénible pour les utilisateurs qui veulent, disons, augmenter la taille de la police. –