Bekijk Volledige Versie : Proxy Verbieden
Is er in godsnaam een mogelijkheid om een Proxy te verbieden op je server?
Ik heb namelijk een klant die last heeft van het volgende :
Iemand die Proxy gebruikt wordt lid op zijn forum met ranzige nickname's
Dus bannen helpt zoiezo niet, ene keer is het Rusland andere keer China.
Hij kan ook niet verbieden om lid te worden, dat is namelijk de doel van de cheater, maar we worden er gewoon gek van.
Hier moet toch een oplossing voor zijn?
Wellicht is het mogelijk als de proxy in zijn headers aangeeft dat het een proxy is. Nu is het probleem dat dat niet altijd het geval is :)
Er zijn opties hoor, gewoon even het ip checken op poort 80 (enz) dan heb je er al een hoop, en zo zijn er gewoon lijsten met duizenden proxy ips die je kunt blacklisten
Wat ik ook wel eens heb gezien bij een forum is een javascript login maken, dus dat javascript aan moet staan, en dan een url refresher erop, zodat hij steeds uit de proxy gaat.
Een proxy verbieden is erg moeilijk, dezertijds zijn proxies zo ingesteld dat het op normale clients lijken. (En er komen ook nog eens honderden proxies bij per dag, webbased voornamelijk, bekijk www.proxy.org maar eens)
Wat je wel kan doen is het uitschakelen van JavaScript verbieden (Dus bijv. een redirect als javascript uitstaat; Iedere moderne browser heeft JavaScript) en dan met JavaScript het IP krijgen.
<SCRIPT>
var ip = new java.net.InetAddress.getLocalHost();
var ipStr = new java.lang.String(ip);
document.writeln(ipStr.substring(ipStr.indexOf("/")+1));
</SCRIPT>
(Dit script heb ik op internet gevonden: http://www.rgagnon.com/jsdetails/js-0019.html, dus credits horen mij niet toe).
Hierna moet je dus iets schrijven waardoor je geen toegang meer krijgt tot de site. Maar dit is dus voor de webmaster en niet de hoster.
EDIT: Net even uitgeprobeerd, lijkt niet te werken; Negeer deze oplossing maar.
Hmmm er moet toch een oplossing zijn.
Ik hoor net van een collega dat jet met een Activex systeem het MAC ID enz kan achterhalen en die bannen.
Maar die Activex lijkt me geen oplossing, daar heb je weer een certificaat voor nodig.
Iemand nog idee's?
Ja. Maakt de registratie alleen mogelijk via https. Veel proxies ondersteunen geen https verbindingen.
Ook een heleboel wel, dan is het niet zo secure als je wil, maar het werkt wel
Alleen registraties via https lijkt mij geen optie, dan komen er alsnog bijna geen leden :)
Ben aan het google'en wel een paar opties maar allemaal zijn al getest door anderen en zonder suc6
Probeer eens dat bij registratie een fsocketopen naar het ip wordt gedaan, poort 80. Als dat kan draait er dus een webserver achter het IP, waarschijnlijk proxy. Eventueel kan je ook een minder gebruikte poort nemen om te voorkomen dat er een webinterface van een router geblokkeerd wordt.
Poort 3306 ofzo, meeste proxies hebben toch wel een database.
Probeer eens dat bij registratie een fsocketopen naar het ip wordt gedaan, poort 80. Als dat kan draait er dus een webserver achter het IP, waarschijnlijk proxy. Eventueel kan je ook een minder gebruikte poort nemen om te voorkomen dat er een webinterface van een router geblokkeerd wordt.
Poort 3306 ofzo, meeste proxies hebben toch wel een database.
Hoe doen we dat dan?
Ik zal eens even wat proberen hier, ik post zo het resultaat
http://perishablepress.com/press/2008/04/20/how-to-block-proxy-servers-via-htaccess/
Zou dit een optie kunnen zijn?
Yup, alleen als je 1000 proxies in htaccess zet werkt je hele site niet meer :P
Bovendien moet je ze dan allemaal handmatig invoeren
En dat tweede werkt niet
<?php
//Proxy Detectie
$ip = $_SERVER['REMOTE_ADDR'];
$fp = fsockopen("$ip", 80, $errno, $errstr, 5);
if (!$fp) {
print "Geen Proxy";
} else {
print "Proxy";
}
?>
Dit werkt, alleen het is niet ideaal.
Ok het beste kan je de tijd naar 1 zetten ipv 5, dat werkt ook prima, en dan een htacces maken met php_flag display_errors Off, dan krijg je die error niet, maar gewoon Geen Proxy / Proxy. Uiteraard is dit vast niet de meest subtiele oplossing
In het verleden met Flash ge-experimenteert om fraudeleuze (creditcard) bestellingen beter te kunnen traceren.
Met actionscript kan je een verbinding naar buiten opzetten zonder dat gebruik van de proxy server wordt gemaakt, en zodoende het echte IP-adres registreren.
Werkt echter alleen als de bezoeker een rechtstreekse Internet verbinding heeft, niet achter een firewall zit, en de Flash plugin heeft geinstalleerd.
Proof of concept:
- Maak gebruik van Tor of een andere proxy server en ga naar: http://www.je-eigen-domein.nl/detect-ip.php
Actionscript code ziet er ongeveer als volgt uit:
socket = new XMLSocket()
function myOnConnect(success) {
if (success)
{
socket.send("GET /PHP-script-op-je-server-dat-IP-adres-registreert.php HTTP/1.0\r\nHost: www.[NAAM-VAN-DOMEIN].nl\r\n\r\n")
}
}
socket.onConnect = myOnConnect
socket.connect("www.[NAAM-VAN-DOMEIN].nl", 8080))
XMLsocket kan alleen verbinding maken naar de server waar de .swf vandaan komt, op een poortnummer >1024.
Je moet je webserver dus zo instellen dat deze (ook) naar een poort >1024 luistert. In het voorbeeld is dat naar 8080.
En dan gaan we van een proxy over op een vpn verbinding waarbij al het netwerk verkeer over die verbinding gaat...