Deel van IP-adres blokkeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rob van rhee

rob van rhee

11/08/2018 01:39:22
Quote Anchor link
Hoi ik heb een probleem ik heb een cryptocurrentie faucet waar mensen om de 24 uur doormiddel van hun adres munten kunnen halen. deze slaat het ipnr adress tijd en het aantal wat ze hebben gekregen in een mysql database.
maar nu zijn er handige mensen bij die heel veel ip adressen gebruiken in dezelfde range nu wil ik alleen
de eerste 5 a 6 chars gebruiken van de ip om te blokken het script doet nu alleen het hele ip checken.
weet iemand hoe ik dit voorelkaar kan krijgen ?

zie onder dit is het probleem wil dus 005.101 blocken
2018-08-10 02:06:24 5.101.221.37
2018-08-10 02:07:28 5.101.221.91
2018-08-10 02:08:03 5.101.221.83
2018-08-10 02:08:51 5.101.221.52
2018-08-10 02:09:24 5.101.221.34

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
 protected function check_payout_time($ip_address){
                $this->ip_address = $this->DB->escape_string($ip_address);
                $interval = "7 HOUR"; // hardcoded default interval if the custom interval is messed up
                $interval_value = intval(substr($this->SETTINGS->config["payout_interval"],0,-1));
                $interval_function = strtoupper(substr($this->SETTINGS->config["payout_interval"],-1));

                if ($interval_value >= 0 && ($interval_function == "H" || $interval_function == "M" || $interval_function == "D")) {
                        $interval = $interval_value." ";
                        switch ($interval_function) {
                                case
"M":
                                        $interval .= "MINUTE";
                                        break;
                                case
"H":
                                        $interval .= "HOUR";
                                        break;
                                case
"D":
                                        $interval .= "DAY";
                                        break;
                        }
                }


                $user_check = " AND (";
                if ($this->SETTINGS->config["user_check"] == "ip_address" || $this->SETTINGS->config["user_check"] == "both") {
                $user_check .= " `ip_address` = '". $this->ip_address ."'";


                }

                if ($this->SETTINGS->config["user_check"] == "wallet_address" || $this->SETTINGS->config["user_check"] == "both") {
                        $user_check .= ($this->SETTINGS->config["user_check"] == "both"?" OR":"")." `payout_address` = '". $this->payout_address ."'";
                }


                $user_check .= ")";
                $query = sprintf("SELECT `id` FROM `%spayouts` WHERE `timestamp` > NOW() - INTERVAL %s",
                                        $this->DB->TB_PRFX,
                                        $interval.$user_check);
                $result = $this->DB->query($query);

                if ($row = @$result->fetch_assoc()) {
                         // user already received a payout within the payout interval
                        $this->status = SF_STATUS_PAYOUT_DENIED;
                        return false;
                }

                else {
                        // All is good, payment will be given
                        return true;
                }
        }

?>
Gewijzigd op 11/08/2018 02:36:44 door - Ariën -
 
PHP hulp

PHP hulp

23/11/2024 14:43:46
 
- Ariën  -
Beheerder

- Ariën -

11/08/2018 02:33:37
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(strpos($_SERVER['REMOTE_ADDR'], "5.101") === 0) {
echo "No access allowed!";
}

?>
 
Rob Doemaarwat

Rob Doemaarwat

11/08/2018 09:24:57
Quote Anchor link
Let op: Gebruikers met de zelfde provider zitten vaak in dezelfde IP-reeks (maar zijn dus verschillende gebruikers). Mobiele klanten kunnen soms zelfs hetzelfde IP-adres delen (Carrier-grade NAT). Zo'n IP (reeks) check is dus niet waterdicht.

Wat je zoekt is volgens mij (regel 25):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$user_check .= " `ip_address` LIKE '". preg_replace('/(\\.\\d+){2}$/','.%',$this->ip_address) ."'";

Hiermee vervang je de laatste twee cijferblokken door een ".%", waardoor je een LIKE kunt doen op het eerste deel. Let op: werkt dus alleen met IPv4 adressen.
 
Thomas van den Heuvel

Thomas van den Heuvel

11/08/2018 11:57:03
Quote Anchor link
Ik hoop ook dat e.e.a. in een transactie staat, zodat het controleren en uitbetalen ook echt één ondeelbare actie is :p. En ja, misschien ook een idee om alles ook IPv6 compatible te maken.
 
Rob van rhee

rob van rhee

11/08/2018 13:05:07
Quote Anchor link
Rob Doemaarwat op 11/08/2018 09:24:57:
Let op: Gebruikers met de zelfde provider zitten vaak in dezelfde IP-reeks (maar zijn dus verschillende gebruikers). Mobiele klanten kunnen soms zelfs hetzelfde IP-adres delen (Carrier-grade NAT). Zo'n IP (reeks) check is dus niet waterdicht.

Wat je zoekt is volgens mij (regel 25):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$user_check .= " `ip_address` LIKE '". preg_replace('/(\\.\\d+){2}$/','.%',$this->ip_address) ."'";

Hiermee vervang je de laatste twee cijferblokken door een ".%", waardoor je een LIKE kunt doen op het eerste deel. Let op: werkt dus alleen met IPv4 adressen.


heb het veranderd ben benieuwd als dit de oplossing is ben ik u reuze dankbaar
nu even alles in de gaten houden !!




Toevoeging op 11/08/2018 13:07:18:

- Ariën - op 11/08/2018 02:33:37:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(strpos($_SERVER['REMOTE_ADDR'], "5.101") === 0) {
echo "No access allowed!";
}

?>


dit is niet wat ik zoek. tor exit nodes wel worden al geblockt doormiddel van een php script.



Toevoeging op 11/08/2018 13:08:25:

Thomas van den Heuvel op 11/08/2018 11:57:03:
Ik hoop ook dat e.e.a. in een transactie staat, zodat het controleren en uitbetalen ook echt één ondeelbare actie is :p. En ja, misschien ook een idee om alles ook IPv6 compatible te maken.



heb ipv6 disabled. veel te veel werk :-)




Toevoeging op 11/08/2018 23:55:29:

Rob van rhee op 11/08/2018 13:05:07:
Rob Doemaarwat op 11/08/2018 09:24:57:
Let op: Gebruikers met de zelfde provider zitten vaak in dezelfde IP-reeks (maar zijn dus verschillende gebruikers). Mobiele klanten kunnen soms zelfs hetzelfde IP-adres delen (Carrier-grade NAT). Zo'n IP (reeks) check is dus niet waterdicht.

Wat je zoekt is volgens mij (regel 25):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$user_check .= " `ip_address` LIKE '". preg_replace('/(\\.\\d+){2}$/','.%',$this->ip_address) ."'";

Hiermee vervang je de laatste twee cijferblokken door een ".%", waardoor je een LIKE kunt doen op het eerste deel. Let op: werkt dus alleen met IPv4 adressen.


heb het veranderd ben benieuwd als dit de oplossing is ben ik u reuze dankbaar
nu even alles in de gaten houden !!


*** bedankt dit is wat ik zocht !! het werkt perfect !!!!!!



Toevoeging op 11/08/2018 13:07:18:

- Ariën - op 11/08/2018 02:33:37:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(strpos($_SERVER['REMOTE_ADDR'], "5.101") === 0) {
echo "No access allowed!";
}

?>


dit is niet wat ik zoek. tor exit nodes wel worden al geblockt doormiddel van een php script.



Toevoeging op 11/08/2018 13:08:25:

Thomas van den Heuvel op 11/08/2018 11:57:03:
Ik hoop ook dat e.e.a. in een transactie staat, zodat het controleren en uitbetalen ook echt één ondeelbare actie is :p. En ja, misschien ook een idee om alles ook IPv6 compatible te maken.



heb ipv6 disabled. veel te veel werk :-)


 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.