Wie das sperren von IPs für POST-Anfragen, aber nicht BEKOMMEN?

Ich habe eine website, wo ich bin immer eine ganze Menge von Kommentar-spam. Blick auf die IP-Adressen der spam herkommt, sind Sie meist aus Ländern, in denen es ist unwahrscheinlich, dass irgendwelche realen Menschen interagieren möchten, mit meiner englischen website, so macht es Sinn für mich einfach sperren.

Dies sollte Recht einfach sein, allerdings würde ich es mögen, wenn der Verkehr aus diesen Ländern könnte eigentlich meine Inhalte, nicht auf die Bemerkung, Eintragung etc. Formen. So effektiv möchte ich es Ihnen ermöglichen GET-Methode fordert, aber nicht POST-Methode lieben.

Idealerweise würde ich gerne tun in der .htaccess-Datei für die Website, sondern tatsächlich mit der Programmierung in PHP-Skripte, die Leistung der Website. Nach ein bisschen suchen fand ich, was ich dachte, war genau das, was ich brauchte: . Es zeigte sich, dass ich tun konnte, genau wie oben beschrieben mit:

# Block China, Russia etc. from POSTs and similar methods
<Limit POST PUT DELETE>
order deny,allow
deny from 210.5.214.128/29
deny from 210.89.69.160/28
# Hundreds more lines...
# My current IP (sample provided here, actual used in reality), to test
deny from 100.100.100.100
allow from all
</Limit> 

# Allow anyone to do GETs and HEADs
<Limit GET HEAD>
order deny,allow
allow from all
</Limit>

Aber es hatte nicht den gewünschten Effekt. Ich kann tun, GET-Anfragen (wie gewünscht), aber Beiträge auch immer noch als normal, wo ich erwarten würde, dass ein 403 Forbidden-Fehler vielleicht.

Wenn ich nicht den tag benutzen und meine IP in die deny-Liste, tut es erfolgreich verhindern, dass mir der Zugriff auf die Seite (sowohl für GET und POST).

Kann jemand mir raten, was ich ändern muss?

  • Ideally, I'd like to do this in the .htaccess file for the site rather than actually coding it into the PHP scripts - warum? Letzteres ist schneller und einfacher zu pflegen.
  • Für mich, die htaccess-option ist einfacher zu pflegen als meine Quelle für unerwünschte IPs bietet Ihnen in diesem format. Das gewünschte Ergebnis zu erzielen auf die PHP-Ebene, würde ich entweder hart-code diese als array (bisschen umständlich, aber möglich), analysieren einen hochgeladenen text-Datei mit den IPs (etwas langsamer, ich erwarte), oder legen Sie Sie in eine Datenbank und erhalten Sie von dort (mit ziemlicher Sicherheit weniger effiziente). Auch, die .htaccess-option, die mir dies erlaubt, die gesamte site, ohne zu müssen, bietet diese Funktion in jedes PHP-Skript.
  • Gehen einige benchmarking, und beachten Sie, was happenning mit der Speichernutzung während der Ausführung. Selbst unter der Annahme, dass die server neu gestartet sind nicht ein problem der Leistung sein.
InformationsquelleAutor Jack | 2013-08-30
Schreibe einen Kommentar