Jedovatý kód v DB při načtení IP z getRemoteAddress()

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Milan Obrtlík
Člen | 50
+
+1
-

Dobrý den všichni,
v DB mám sloupec IP VARBINARY(16). Do něj ukládám ip pomocí tohoto:

HomepagePresenter.php:

public function renderDefault() {
	$ip = $this->getHttpRequest()->getRemoteAddress();
	$this->visitsManager->new($ip);
}

VisitsManager.php:

public function new($ip) {
	$this->database->query("INSERT INTO VISITS (IP) VALUES (INET6_ATON(?))", $ip);
}

Dneska se mi v DB->visits začaly objevovat řádky s obsahem IP = /<'B, T~TJ, ^E.?, )m{t, .~UC, $NAm, $I^>, -r$w, $LZ- a podobné prasečiny. Mám se toho obávat? Případně jak to ošetřit?

Vastlik
Člen | 58
+
0
-

Není to tím, že se někdo připojil s IPv6?
délka

Editoval Vastlik (12. 3. 2016 17:22)

Milan Obrtlík
Člen | 50
+
0
-

Vastlik napsal(a):

Není to tím, že se někdo připojil s IPv6?
délka

Já tu IP ukládám jako binární hodnotu, ne string (zabere to maximálně 16 bajtů při úplném zápisu IPv6), proto si myslím, že to nemá nic společného s délkou IP adresy.

INET6_ATON(IPv4) se v DB zobrazí jako čtyři bajty bez teček → ukládají se tam jenom znaky 0-F.
INET6_ATON(IPv6) se v DB zobrazí jako IPv6 bez dvojteček → ukládají se tam jenom znaky 0-F.