Witam,
Jakiś czas temu napisałem skrypt zbierający dane i zapisujący je do bazy.
W skrócie - na xx serwerów działa skrypt który co minute pobiera dane i za pomocą curl --data wysyła je pod wskazany url.
Pod wskazanym url jest już skrypt w php który dane pobiera i zapisuje do bazy.
Obecnie przy pobieraniu danych są sprawdzane 2 rzeczy:
1) remote_addr
2) unikalny klucz, czyli ciąg znaków inny dla kazdego z serwerów.
Jeśli te 2 rzeczy się zgadzają dane sa aktualizowane, jeśli nie - dostaje powiadomienie.
Od strony serwera ten skrypt jest zakodowany, jednak nie problem podejrzeć co robi i gdzie wysyła te dane - dla chcącego nic trudnego.
Chcialbym się Was poradzić jak mogę dodatkowo zabezpieczyć taki formularz - główne obawy tyczą tego że po walidacji poprawności formatu danych mam zapytanie " update ........ where ip=adres.ip and klucz=klucz"
Czyli niezależnie czy ip i klucz jest poprawny i tak jest wykonywane zapytanie do bazy, więc ktoś może "sztucznie" obciążać serwer bazodanowy.
Myślałem by najpierw sprawdzać poprawnośc pary klucz i ip, i dopiero później aktualizować dane dla danej pary, ale czy to w jakiś sposób zwiększy bezpieczeństwo?
Mam wtedy każdorazowo po wysłaniu danych 2 zapytania zamiast jednego.
1)W jaki sposób mogę dodatkowo zabezpieczyć formularz bez zaprzęgania bazy - może dodać wymyślonego user-agenta?
2) Szyfrowanie wysyłanych danych - w jaki sposób je zrealizować, czy można jakoś zabezpieczyć wysyłane dane - np zakodować ( poza samym https)?
3) Bede też wdzięczny do jakiś źródeł/case study/przykładów czy best practice w tym zakresie.