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
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?
- Milan Obrtlík
- Člen | 50
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.