Hallo!
Bij het beveiligen van mijn website gebruik ik een soort dubbele check:
- In eerste instantie roep ik een functie aan die uitgaat van het principe "all input is evil". Hier zoek ik naar verdachte patronen voor intrusion detection, en vervolgens sanitize ik alle input.
- In tweede instantie probeer ik bij het uitvoeren van queries goed te kijken naar mogelijkheden tot injection en bij voorkeur gebruik te maken van switches waar mogelijk.
Mijn probleem speelt in het eerste traject. Na het lezen van dit bere-interessante artikel heb ik besloten ook de http-headers als input te beschouwen, en deze zo goed mogelijk te controleren en sanitizen. Temeer daar deze gegevens worden gebruikt in mijn stat-module (bijv http-referrer, user-agent en accept-language) en ook worden weggeschreven in de database.
Ik kan mij globaal een voorstelling maken van de mogelijkheden voor SQL-Injection dmv http-headers, maar weet niet goed waar ik op moet checken bij de detection en het sanitizen van deze headers.
Normaal gesproken zou ik zoeken naar patronen als "'%20%22-,;() en natuurlijk insert, update, select, or, and enz. Maar ik kan me voorstellen dat een user-agent prima bijvoorbeeld " and " kan bevatten, om nog maar te zwijgen van ;,. enz.... >> Vraag 1: Naar welke patronen zou ik het beste kunnen zoeken voor de detection?
Voor het sanitizen gebruik ik doorgaans mysql_real_escape_string en addslashes. Dat gaat hier natuurlijk niet goed. >> Vraag 2: Zijn er mensen die hier iets handigs voor gebruiken? Of kan ik het beste gewoon de strings uit de detection verwijderen?
bvd,
X.
Bij het beveiligen van mijn website gebruik ik een soort dubbele check:
- In eerste instantie roep ik een functie aan die uitgaat van het principe "all input is evil". Hier zoek ik naar verdachte patronen voor intrusion detection, en vervolgens sanitize ik alle input.
- In tweede instantie probeer ik bij het uitvoeren van queries goed te kijken naar mogelijkheden tot injection en bij voorkeur gebruik te maken van switches waar mogelijk.
Mijn probleem speelt in het eerste traject. Na het lezen van dit bere-interessante artikel heb ik besloten ook de http-headers als input te beschouwen, en deze zo goed mogelijk te controleren en sanitizen. Temeer daar deze gegevens worden gebruikt in mijn stat-module (bijv http-referrer, user-agent en accept-language) en ook worden weggeschreven in de database.
Ik kan mij globaal een voorstelling maken van de mogelijkheden voor SQL-Injection dmv http-headers, maar weet niet goed waar ik op moet checken bij de detection en het sanitizen van deze headers.
Normaal gesproken zou ik zoeken naar patronen als "'%20%22-,;() en natuurlijk insert, update, select, or, and enz. Maar ik kan me voorstellen dat een user-agent prima bijvoorbeeld " and " kan bevatten, om nog maar te zwijgen van ;,. enz.... >> Vraag 1: Naar welke patronen zou ik het beste kunnen zoeken voor de detection?
Voor het sanitizen gebruik ik doorgaans mysql_real_escape_string en addslashes. Dat gaat hier natuurlijk niet goed. >> Vraag 2: Zijn er mensen die hier iets handigs voor gebruiken? Of kan ik het beste gewoon de strings uit de detection verwijderen?
bvd,
X.