2013-04-30 4 views
0

Je construis un bot piège/robot-trap sur mon site:Bloquer les adresses IP dans .htaccess ou en PHP depuis la base de données?

Il y a un lien caché quelque part sur la page, que les utilisateurs normaux ne voient pas, mais un robot voit. Le lien est également indiqué dans robots.txt, donc Google ne tombera pas dans le piège. Lorsqu'un robot ouvre la page masquée, l'adresse IP est automatiquement signalée en rouge au MySQL.

Ma question est:

  1. Quand une nouvelle adresse IP se trouve en position, de quelle manière est préférable de bloquer que: Régénérer le fichier .htaccess, avec la nouvelle adresse IP ajoutée, de sorte que le serveur Web lui-même va faire le blocage.
  2. Ne salissez pas avec .htaccess, regardez plutôt la table IP de MySQL chaque fois que quelqu'un charge la page, puis décider de PHP quoi faire avec l'utilisateur.
+0

Qu'en est-il des gens qui utilisent des lecteurs d'écran ou des navigateurs textuels? Vont-ils voir le lien et potentiellement tomber dans votre piège? –

+0

Le lien est marqué "display: none;". Pour les utilisateurs normaux, je veux dire tout, tout le monde, qui n'est pas un bot, sauf pour Google, Yahoo, et les plus gros moteurs de recherche. –

+0

Gardez à l'esprit que certains navigateurs (dont beaucoup dans les catégories que j'ai répertoriées) ignorent les styles CSS ou n'en utilisent qu'un sous-ensemble. –

Répondre

2

Je voudrais vraiment aller avec l'option 2. La seule raison étant que je serais très mal à l'aise que j'ai un fichier. Htaccess étant joué à des intervalles aléatoires dans le site Web tout le temps. C'est un sentiment lancinant d'avoir une arme sur mon front tout le temps.

Si la commande db est activée, la pire chose qui puisse arriver dans une erreur est que certaines adresses IP listées en noir ont toujours accès. Avec htaccess s'il y a une erreur, non seulement l'expérience de chaque utilisateur est gâchée, les données sécurisées peuvent être compromises aussi bien ..

0

Quelle est la meilleure façon? Cela dépend fortement de ce que vous êtes capable de faire. Les règles de base sont:

  • N'utilisez pas les fichiers .htaccess - configurez directement votre serveur.
  • Connectez Apache avec votre Mysql directement pour authz.
  • bloc incomming trafic dans la couche TCP/IP (Iptables)

Tout le reste est juste rampait que vous pouvez faire, mais vous devez être assuré que vous le faites parce que vous ne pouvez pas le faire correctement. Donc, ne vous souciez pas trop à moins que vous ne vous efforciez d'obtenir le meilleur.

+0

"règles de base" selon qui? pouvez vous fournir des références? –

+2

L'activation du support '.htaccess' signifie que chaque requête web doit effectuer plusieurs tests pour l'existence de ce fichier, et que les règles dans chacun d'eux doivent être lues, analysées, agrégées et interprétées avant même que la requête puisse démarrer.La configuration statique de type '/ etc/httpd' est lue une fois au démarrage. – tadman

+0

@George Cummins: Il est de notoriété publique que plus un système est direct, mieux c'est parce qu'il y a moins de temps consacré à la différence et moins de choses peuvent échouer. La règle générale concernant '.htaccess' est documentée dans la documentation Apache HTTPD elle-même. La configuration d'accès est mieux faite dans le Webserver lui-même (la couche d'accès proprement dite) que dans une couche beaucoup plus profonde qui n'a pas besoin d'être chargée si l'accès est refusé de toute façon. Cela devrait être clair en soi. Si vous utilisez un serveur Web devant le serveur Web de l'application, les mêmes règles s'appliquent. –

1

Au lieu de déconner avec la configuration Apache httpd, qui si votre script se trompe pour une raison quelconque planter votre pile Web, qu'en est-il de l'intégration avec un système comme fail2ban?

Le blocage à l'aide d'un outil d'interdiction serait beaucoup plus efficace.

+0

+1 Iptables sont très efficaces pour bloquer le trafic IP. –

Questions connexes