PDA

Bekijk Volledige Versie : Proxy Verbieden



Arto
21/04/08, 19:09
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?

DiedX
21/04/08, 19:33
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 :)

SF-Jeroen
21/04/08, 19:40
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.

Alexio
21/04/08, 19:42
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.

Arto
21/04/08, 20:18
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?

Erik
21/04/08, 20:39
Ja. Maakt de registratie alleen mogelijk via https. Veel proxies ondersteunen geen https verbindingen.

SF-Jeroen
21/04/08, 20:46
Ook een heleboel wel, dan is het niet zo secure als je wil, maar het werkt wel

Arto
21/04/08, 20:54
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

SF-Jeroen
21/04/08, 20:56
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.

Arto
21/04/08, 20:59
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?

SF-Jeroen
21/04/08, 21:03
Ik zal eens even wat proberen hier, ik post zo het resultaat

Arto
21/04/08, 21:05
http://perishablepress.com/press/2008/04/20/how-to-block-proxy-servers-via-htaccess/


Zou dit een optie kunnen zijn?

SF-Jeroen
21/04/08, 21:10
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

Arto
21/04/08, 22:19
Dit helpt helaas niet :)

maxnet
21/04/08, 22:23
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.

gjtje
28/04/08, 08:25
En dan gaan we van een proxy over op een vpn verbinding waarbij al het netwerk verkeer over die verbinding gaat...