the ultimate protection against php/mysql injection attacks

een lange tijd geleden was ik een noob met php
om eerlijk te zijn ^^ ik wist niks, ik probeerde het te leren en uiteidelijk, -->snap<-- ik het nu.
ik kan het nog niet schrijven zo 123 uit me hoofd maar goed :)

ik was bezig met een site, en ik had hiervan een login scriptje gebruikt, en dat werkte, (niet te weten van injection attacks) een vriend van mij die zij, back-up je mysql database, dan ga ik proberen je database the vernietigen :), ik dacht het zou hem nooit lukken, maar uiteidelijk was mijn table users weg...

nu zat ik te denken en te denken, hoe ik dat zou kunnen verkomen

mijn oplossing:

1)je moet 2 users hebben in je msql database
2)dus geen gratis host :)

je moet in je database 1 user full write acces geven, en de andere allees lees acces

daarbij moet je -->2<-- mysql config files maken

dit weet idereen wel :)

<?php
// include/require deze in register pagina's
$m_usr="johan_fullacces";
$m_pass="";
$m_host="localhost";
$m_db="users";
?>


<?php
// include/require deze in je alleen member pagina's
$m_usr="johan_readonly";
$m_pass="";
$m_host="localhost";
$m_db="users";
?>

dit is een theorie van mij, zelf denk ik dat dit het moet tegen houden

bewijs iemand het tegen deel maar :)

gewoon nooit een mysql verbinding maken met je root account :)
dat is ook wat ik nu doe :), maar ik heb hier nog nooit iets over gelezen

maar als je nooit verbinding maakt met je root account hoe kun je dan users toevoegen in je database ?

je moet gewoon een mysql user hebben met helemaal geen acces, dus dat hij alleen kan lezen :) die geef je door in je member pagina
Read-only is leuk en aardig, maar hoe ga je dan gegevens in de database wegschrijven en updaten? Dat lukt dan niet meer. Je moet er voor zorgen dat er geen SQL-injection kan plaatsvinden. Bij de tutorials staat daar een goed verhaal over.

Het kan overigens geen kwaad om de rechten van een mysql-user te beperken, maar je moet het niet te gek maken.
:), ja dat kan maar als er gegevens moeten geweizigt worden include je de full acces

je moet er ook voor zorgen dat je niet een open array laat staan, dus de pagina's met scripts kleiner maken

maar personelijk vindt ik dit zelf goed bedacht van me zelf
Hoi Johan,

stel dat je iets wilt maken waarbij meer dan twee users nodig zijn? Een forum met driehonderd leden of zo?
Dit is tamelijk onpractisch.. dan moet je soms per keer twee keer verbinding maken?

Misschien voor sommige CMSjes goed, maar volgens mij is de ultimate protection tegen injection gewoon de magic quotes van php, gecombineerd met geen register_globals, en iemand die even goed checkt dat ie geen brakke ongein in zn sql queries doet.
@jan

dan kan je er nog eventueel een user bij maken
met wat minder opties als je root

maar dit is iniedergeval veel beter dan je root blootstellen

@arend

ik heb ook nooit gezegd dat dit voor iets groots moet zijn zoals een forum, ik gebruik deze optie voor een simpel login systeem met een admin en een normal user

en dan werkt hij perfect, geen injections kan hier worden uigevoerd daarbij komt ook nog dat ik na elke "header" een exit() heb geplaats voor mensen met een gehackte browser, zodat als er een else komt (dom maar als) dat hij niet verder gaat.
en daar komt bij dat ik nog geen eens een php pro ben, ik ken het nog geen eens schrijven :s
en bij alleen het begrijpen van php zo'n oplossing lijkt me toch al aardig goed toch ?
Ja, als het werkt is het goed :-)
dankje!, mijn allereerste php compliment op phphulp

(crying on the floor being happy)

Reageren