Skip to content

Commit dbdd24b

Browse files
committed
Ajout de la notion de REMOTE_PORT pour pouvoir désambiguïser les personnes partageant une adresse IP si nécessaire
1 parent bb6f3b4 commit dbdd24b

File tree

8 files changed

+57
-8
lines changed

8 files changed

+57
-8
lines changed

abuse.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
$message .= PHP_EOL . 'Raison : ' . $_POST['raison'];
7878
$message .= PHP_EOL . 'Message : ' . $_POST['userMessage'];
7979
$message .= PHP_EOL . '---------------------------------------------';
80-
$message .= PHP_EOL . 'IP : ' . $_SERVER['REMOTE_ADDR'];
80+
$message .= PHP_EOL . 'IP : ' . $_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['REMOTE_PORT'];
8181
$message .= PHP_EOL . 'BROWSER : ' . $_SERVER['HTTP_USER_AGENT'];
8282
$message .= PHP_EOL . 'DATE : ' . date('Y-m-d H:i:s');
8383

classes/ImageObject.class.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ private function chargerFromBdd(array $values, string $fromField, bool $saveOnCu
110110
}
111111
${$varName}->setId($resultat->id);
112112
${$varName}->setIpEnvoi($resultat->remote_addr);
113+
${$varName}->setIpPortEnvoi($resultat->remote_port);
113114
${$varName}->setDateEnvoi($resultat->date_action);
114115
${$varName}->setNomOriginal($resultat->old_name);
115116
${$varName}->setNomNouveau($resultat->new_name);
@@ -143,8 +144,9 @@ private function chargerFromBdd(array $values, string $fromField, bool $saveOnCu
143144
public function sauver(): void
144145
{
145146
// J'enregistre les infos en BDD
146-
$req = MaBDD::getInstance()->prepare('UPDATE images SET remote_addr = :ipEnvoi, date_action = :dateEnvoi, old_name = :oldName, new_name = :newName, size = :size, height = :height, width = :width, last_view = :lastView, nb_view_v4 = :nbViewV4, nb_view_v6 = :nbViewV6, md5 = :md5, isBloquee = :isBloquee, isSignalee = :isSignalee, isApprouvee = :isApprouvee, abuse_categorie = :abuseCategorie WHERE id = :id');
147+
$req = MaBDD::getInstance()->prepare('UPDATE images SET remote_addr = :ipEnvoi, remote_port = :ipPortEnvoi, date_action = :dateEnvoi, old_name = :oldName, new_name = :newName, size = :size, height = :height, width = :width, last_view = :lastView, nb_view_v4 = :nbViewV4, nb_view_v6 = :nbViewV6, md5 = :md5, isBloquee = :isBloquee, isSignalee = :isSignalee, isApprouvee = :isApprouvee, abuse_categorie = :abuseCategorie WHERE id = :id');
147148
$req->bindValue(':ipEnvoi', $this->getIpEnvoi());
149+
$req->bindValue(':ipPortEnvoi', $this->getIpPortEnvoi(), PDO::PARAM_INT);
148150
$req->bindValue(':dateEnvoi', $this->getDateEnvoiBrute());
149151
$req->bindValue(':oldName', $this->getNomOriginal());
150152
$req->bindValue(':newName', $this->getNomNouveau());
@@ -328,14 +330,16 @@ public function creer(): bool
328330
$this->setPoids(filesize($this->getPathMd5()));
329331
// Nom originel (non récupérable sur le fichier)
330332
$this->setNomOriginal($this->getNomTemp());
331-
// @ IP d'envoi
333+
// @ IP + port d'envoi
332334
$this->setIpEnvoi($_SERVER['REMOTE_ADDR']);
335+
$this->setIpPortEnvoi($_SERVER['REMOTE_PORT']);
333336

334337
/**
335338
* Création en BDD
336339
*/
337-
$req = MaBDD::getInstance()->prepare('INSERT INTO images (remote_addr, date_action, old_name, new_name, size, height, width, md5, isBloquee) VALUES (:ipEnvoi, NOW(), :oldName, :newName, :size, :height, :width, :md5, :isBloquee)');
340+
$req = MaBDD::getInstance()->prepare('INSERT INTO images (remote_addr, remote_port, date_action, old_name, new_name, size, height, width, md5, isBloquee) VALUES (:ipEnvoi, :ipPortEnvoi, NOW(), :oldName, :newName, :size, :height, :width, :md5, :isBloquee)');
338341
$req->bindValue(':ipEnvoi', $this->getIpEnvoi());
342+
$req->bindValue(':ipPortEnvoi', $this->getIpPortEnvoi());
339343
// Date : NOW()
340344
$req->bindValue(':oldName', $this->getNomOriginal());
341345
$req->bindValue(':newName', $this->getNomNouveau());

classes/MiniatureObject.class.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public function charger(string $value, string $fromField = RessourceObject::SEAR
8686
$this->setApprouvee($imageParente->isApprouvee());
8787
$this->setNomOriginal($imageParente->getNomOriginal());
8888
$this->setIpEnvoi($imageParente->getIpEnvoi());
89+
$this->setIpPortEnvoi($imageParente->getIpPortEnvoi());
8990
$this->setIdProprietaire($imageParente->getIdProprietaire());
9091
$this->setSuspecte($imageParente->isSuspecte());
9192

classes/RessourceObject.class.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ abstract class RessourceObject
5252
private string $dateEnvoi = '';
5353
private ?string $md5 = null;
5454
private string $ipEnvoi = '';
55+
private int $ipPortEnvoi = 0;
5556
private bool $isBloquee = false;
5657
private bool $isSignalee = false;
5758
private bool $isApprouvee = false;
@@ -477,6 +478,15 @@ public function getIpEnvoi(): string
477478
return $this->ipEnvoi;
478479
}
479480

481+
/**
482+
* Port de l'@ IP d'envoi
483+
* @return int
484+
*/
485+
public function getIpPortEnvoi(): int
486+
{
487+
return $this->ipPortEnvoi;
488+
}
489+
480490
/**
481491
* Image bloquée ?
482492
* @return bool
@@ -715,6 +725,15 @@ protected function setIpEnvoi(string $ipEnvoi): void
715725
$this->ipEnvoi = $ipEnvoi;
716726
}
717727

728+
/**
729+
* Port de l'@ IP d'envoi
730+
* @param int $ipPortEnvoi
731+
*/
732+
protected function setIpPortEnvoi(int $ipPortEnvoi): void
733+
{
734+
$this->ipPortEnvoi = $ipPortEnvoi;
735+
}
736+
718737
/**
719738
* ID du compte propriétaire de l'image
720739
* @return ?int

classes/UtilisateurObject.class.php

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class UtilisateurObject
3434
private string $email = '';
3535
private string $dateInscription = '';
3636
private string $ipInscription = '';
37+
private int $ipPortInscription = 0;
3738
private int $level = self::LEVEL_GUEST;
3839
private int $id = 0;
3940
private bool $isActif = true;
@@ -120,6 +121,15 @@ public function getIpInscription(): string
120121
return $this->ipInscription;
121122
}
122123

124+
/**
125+
* Port de l'@ IP d'inscription
126+
* @return int
127+
*/
128+
public function getIpPortInscription(): int
129+
{
130+
return $this->ipPortInscription;
131+
}
132+
123133
/**
124134
* Niveau de droits
125135
* @return int
@@ -228,6 +238,15 @@ private function setIpInscription(string $ipInscription): void
228238
$this->ipInscription = $ipInscription;
229239
}
230240

241+
/**
242+
* Port de l'@ IP d'inscription
243+
* @param int $ipPortInscription
244+
*/
245+
private function setIpPortInscription(int $ipPortInscription): void
246+
{
247+
$this->ipPortInscription = $ipPortInscription;
248+
}
249+
231250
/**
232251
* Niveau de droits
233252
* @param int $level
@@ -329,8 +348,9 @@ public function connexion(string $user, string $pwd): bool
329348
$maSession->setUserObject($this);
330349

331350
// J'enregistre en BDD la connexion réussie
332-
$req = MaBDD::getInstance()->prepare('INSERT INTO login (remote_addr, date_action, membres_id) VALUES (:ipLogin, NOW(), :membresId)');
351+
$req = MaBDD::getInstance()->prepare('INSERT INTO login (remote_addr, remote_port, date_action, membres_id) VALUES (:ipLogin, :ipPortLogin, NOW(), :membresId)');
333352
$req->bindValue(':ipLogin', $_SERVER['REMOTE_ADDR']);
353+
$req->bindValue(':ipPortLogin', $_SERVER['REMOTE_PORT'], PDO::PARAM_INT);
334354
$req->bindValue(':membresId', $userID, PDO::PARAM_INT);
335355

336356
$req->execute();
@@ -365,6 +385,7 @@ private function charger(int $userID): bool
365385
$this->setUserName($resultat->login);
366386
$this->setDateInscription($resultat->date_action);
367387
$this->setIpInscription($resultat->remote_addr);
388+
$this->setIpPortInscription($resultat->remote_port);
368389
$this->setLevel($resultat->lvl);
369390
$this->setPassword($resultat->password);
370391
$this->setIsActif($resultat->isActif);
@@ -382,12 +403,13 @@ private function charger(int $userID): bool
382403
*/
383404
public function enregistrer(): void
384405
{
385-
$req = MaBDD::getInstance()->prepare('INSERT INTO membres (email, login, password, date_action, remote_addr, lvl, isActif, token) VALUES (:email, :login, :password, NOW(), :ipInscription, :lvl, :isActif, :token)');
406+
$req = MaBDD::getInstance()->prepare('INSERT INTO membres (email, login, password, date_action, remote_addr, remote_port, lvl, isActif, token) VALUES (:email, :login, :password, NOW(), :ipInscription, :ipPortInscription, :lvl, :isActif, :token)');
386407
$req->bindValue(':email', $this->getEmail());
387408
$req->bindValue(':login', $this->getUserNameBDD());
388409
$req->bindValue(':password', $this->getPassword());
389410
// Date est définie par NOW()
390411
$req->bindValue(':ipInscription', $_SERVER['REMOTE_ADDR']);
412+
$req->bindValue(':ipPortInscription', $_SERVER['REMOTE_PORT'], PDO::PARAM_INT);
391413
$req->bindValue(':lvl', $this->getLevel(), PDO::PARAM_INT);
392414
$req->bindValue(':isActif', $this->getIsActif(), PDO::PARAM_BOOL);
393415
$req->bindValue(':token', $this->getToken());

config/image-heberg.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ function exception_handler(Throwable $exception): void
8080
$message .= PHP_EOL . 'URL : ' . ($_SERVER['REQUEST_URI'] ?? '');
8181
$message .= PHP_EOL . 'HTTP REFERER : ' . ($_SERVER['HTTP_REFERER'] ?? '');
8282
$message .= PHP_EOL . 'HTTP USER AGENT : ' . ($_SERVER['HTTP_USER_AGENT'] ?? '');
83-
$message .= PHP_EOL . 'REMOTE ADDR : ' . ($_SERVER['REMOTE_ADDR'] ?? '');
83+
$message .= PHP_EOL . 'REMOTE ADDR : ' . ($_SERVER['REMOTE_ADDR'] ?? '') . ':' . ($_SERVER['REMOTE_PORT'] ?? '');
8484
$message .= PHP_EOL . 'DATE : ' . date('Y-m-d H:i:s');
8585

8686
$encoded_subject = mb_encode_mimeheader('[' . _SITE_NAME_ . '] - Erreur rencontrée', 'UTF-8', 'B', "\r\n", strlen('Subject: '));

contact.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
// Je complète le message avec l'IP de mon émeteur
3636
$message = $_POST['userMessage'];
3737
$message .= PHP_EOL . '---------------------------------------------';
38-
$message .= PHP_EOL . 'IP : ' . $_SERVER['REMOTE_ADDR'];
38+
$message .= PHP_EOL . 'IP : ' . $_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['REMOTE_PORT'];
3939
$message .= PHP_EOL . 'BROWSER : ' . $_SERVER['HTTP_USER_AGENT'];
4040
$message .= PHP_EOL . 'DATE : ' . date('Y-m-d H:i:s');
4141

database.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ CREATE TABLE IF NOT EXISTS `images`
2525
(
2626
`id` int NOT NULL AUTO_INCREMENT,
2727
`remote_addr` varchar(45) NOT NULL,
28+
`remote_port` smallint UNSIGNED NOT NULL,
2829
`date_action` datetime NOT NULL,
2930
`old_name` varchar(255) NOT NULL,
3031
`new_name` varchar(30) NOT NULL,
@@ -58,6 +59,7 @@ CREATE TABLE IF NOT EXISTS `login`
5859
(
5960
`id` int UNSIGNED NOT NULL AUTO_INCREMENT,
6061
`remote_addr` varchar(45) NOT NULL,
62+
`remote_port` smallint UNSIGNED NOT NULL,
6163
`date_action` datetime NOT NULL,
6264
`membres_id` int UNSIGNED NOT NULL,
6365
PRIMARY KEY (`id`),
@@ -79,6 +81,7 @@ CREATE TABLE IF NOT EXISTS `membres`
7981
`password` text NOT NULL,
8082
`date_action` date NOT NULL,
8183
`remote_addr` varchar(45) NOT NULL,
84+
`remote_port` smallint UNSIGNED NOT NULL,
8285
`lvl` tinyint(1) UNSIGNED NOT NULL,
8386
`isActif` tinyint(1) UNSIGNED NOT NULL,
8487
`token` text NOT NULL,

0 commit comments

Comments
 (0)