Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Failo patobulinimas nuo proxy

Parašė Sprunkas· 2012 Bir. 19 11:06:57
#1

Sveiki, gal kas mokat ir galit padaryt, kad negalėtų naudoti proxy serverius, kai pakviečia ką nors? Štai kodas:

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: downloads.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once "maincore.php";
$vers = explode(".",$settings['version']);
if($vers['0'] == 7) {
require_once THEMES."templates/header.php";
} else {
require_once "subheader.php";
require_once "side_left.php";
define("DB_USERS", DB_PREFIX."users");
}

define("DB_INVITES", DB_PREFIX."invites");
$invite = @$_GET['invite'];
$result = dbquery("SELECT * FROM ".DB_USERS." WHERE `user_id`='$invite'");
$narys = dbarray(dbquery("SELECT * FROM ".DB_USERS." WHERE `user_id`='$invite'"));
if(!isset($invite) || !isNum($invite) || !dbrows($result)) redirect(BASEDIR."./");

if($vers['0'] == 7) {
add_to_title(" - Tave pakvietė ".$narys['user_name']);
}

$data = dbarray(dbquery("SELECT * FROM `".DB_INVITES."` WHERE `invite_user_id`='$invite' AND `invite_guest_ip`='".USER_IP."' ORDER by invite_time DESC LIMIT 1"));

if($data['invite_time']  + 60 * 60 * 24 > time()) {
opentable("Jus į šį puslapį pakvietė ".$narys['user_name']);
echo "Tačiau, jo pakvietimas jam nedavė taškų, kuriuos galėtų išleisti mūsų puslapį, nes jūs jau apsilankėt per šio nario nuorodą ankščiau, nei per 24h.";
closetable();
} elseif($data['invite_time']  + 60 * 60 * 24 < time()) {
$result = dbquery("INSERT INTO `".DB_INVITES."` (invite_time, invite_user_id, invite_guest_ip) VALUES ('".time()."', '$invite', '".USER_IP."')");
opentable("Jus į šį puslapį pakvietė ".$narys['user_name']);
echo "Ačiū, kad užsukote į mūsų puslapį.<br>Tikimės, kad jūs lankysitės dažniau šiame puslapį.<br><br>Admintracijos INFO.";
closetable();
}

if($vers['0'] == 7) {
require_once THEMES."templates/footer.php";
} else {
require_once "side_right.php";
require_once "footer.php";
}
?>




Dėkui iš anksto!

Parašė TETYYS· 2012 Rugp. 18 23:08:23
#2

Neįmanoma užblokuoti visų proxy serverių, t.y. Elite proxy, galima užblokuoti tik transpatent ir tą lygį per vidurį (neatsimenu kaip vadinas :D), tai galima padaryti tikrinant siunčiamus headerius iš kliento, tuos headerius galima patikrint taip:

 
$h = array(	'HTTP_VIA', 'HTTP_X_FORWARDED_FOR', 'HTTP_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED', 	'HTTP_CLIENT_IP', 'HTTP_FORWARDED_FOR_IP', 	'VIA', 'X_FORWARDED_FOR', 'FORWARDED_FOR', 'X_FORWARDED', 'FORWARDED', 'CLIENT_IP', 'FORWARDED_FOR_IP', 'HTTP_PROXY_CONNECTION');
foreach ($h as $he)
{
if ($_SERVER[$he])
{
 echo "proxy detected";
}
}
 
, arba naudojant milžiniškas proxy IP database'es tikrint kliento IP.