[php en forms] veiligheid...

Pagina: 1
Acties:

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 08:34
Veiligheidsvraagje

ik las laatst een stukje dat kwaadwillende mensen op een slinkse manier in forums de [img tag misbruiken en daar dan een 'admin-link' neerplanten zoals:

www.forum.com/admin/userinfo.php?action=updateuser&user=jan-marten&newlevel=Amdinistrator

Normaliter kun je dat alleen als admin doen, als je dan op een pagina komt met die link als plaatje dan wordt ie automatisch uitgevoerd (toch?)

Nou dacht ik aan een oplossing:

in de userinfo.php (bovenstaand voorbeeld) de volgende code toevoegen:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
if ($action =="updateuser" &amp;&amp; isset($user) &amp;&amp; $REQUEST_METHOD == "POST")
{
 // goede code
}
else
{
 print "Hacker???";
}
?>

Mijn vraag, is dit een manier om 'hackers' en scriptkiddies te weren dit uit te voeren???

als dit al eens is geweest, ik kon het niet vinden, je mag um op slot zetten als je er een link bijzet over een goed topic

  • Grum
  • Registratie: Juni 2001
  • Niet online
simpel kort en concreet

dummy object met een admin flag erin als je echt admin bent dat in je sessie stoppen en no way dat IEMAND dat kan faken vanaf de -get-line- :)

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Gewoon uit de dbase halen of het wel echt een admin is, zo ja dan mag ie het aanpassen ;)

mijn T.net systeemspecspagina


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
HTTP authentication with PHP heeft wat beperkingen, maar werkt op zich best ok.

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op maandag 18 februari 2002 00:28 schreef RRX het volgende:
Gewoon uit de dbase halen of het wel echt een admin is, zo ja dan mag ie het aanpassen ;)
jij bent zo'n iemand die op een forum bij elke reload gaat kijken of de username/pass wel echt van die user zijn ? >:)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Ik zie hier een aantal oplossingen staan waarbij de admin extra wordt gecontroleerd, maar het probleem in dit geval is waneer een admin op de pagina komt waarop dit plaatje staat. Dan kun je nog zo'n goede admin check hebben, maar is dit nog steeds een security issue.

admin flag in sessie en http auth werken alleen om de admin te identificeren.

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


  • Grum
  • Registratie: Juni 2001
  • Niet online
nou erm dat lost mijn 'idee' toch ook op ? je hebt geen admin flag wh0e1 je word rejected ... klaar.

Plain, secure and simple :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 18 februari 2002 10:53 schreef Grum_ het volgende:
nou erm dat lost mijn 'idee' toch ook op ? je hebt geen admin flag wh0e1 je word rejected ... klaar.

Plain, secure and simple :)
Het gaat er hier juist om dat een willekeurige gebruiker een plaatje in zijn post zet wat eigenlijk die link is. Waneer er dan een admin op die pagina kijkt wordt de request van die gebruiker door een ADMIN uitgevoerd en niet door de willekeurige gebruiker zelf. Deze admin heeft gewoon de admin flag, authorization en wathever.

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


  • Grum
  • Registratie: Juni 2001
  • Niet online
das toch geen probleem als je geen 'GET' vars accept ?

Verwijderd

Op maandag 18 februari 2002 10:13 schreef Grum_ het volgende:

[..]

jij bent zo'n iemand die op een forum bij elke reload gaat kijken of de username/pass wel echt van die user zijn ? >:)
dat is denk ik wel de veiligste manier, niet? als je het encrypted wachtwoord opslaat in een sessie en dan controleert, want iedereen kan natuurlijk wel een 1-tje faken die aangeeft dat ie admin is (bv.)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 18 februari 2002 12:06 schreef Grum_ het volgende:
das toch geen probleem als je geen 'GET' vars accept ?
Dat klopt, en dat heeft dus niks te maken met sessie flags of htaccess dingen ;)...

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


  • Grum
  • Registratie: Juni 2001
  • Niet online
dit was meen ik ooit een exploit voor ubb of vbb of een andere bekend board :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 18 februari 2002 12:07 schreef jurriebur het volgende:

[..]

dat is denk ik wel de veiligste manier, niet? als je het encrypted wachtwoord opslaat in een sessie en dan controleert, want iedereen kan natuurlijk wel een 1-tje faken die aangeeft dat ie admin is (bv.)
Waarom zou je een wachtwoord opslaan in de sessie en deze elke keer weer tegen de DB checken?

Als het goed is, is het niet mogelijk om een sessie van buitenaf te veranderen. Je zorgt nu dus alleen maar voor overhead.

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


Verwijderd

het is misschien niet van buitenaf te veranderen, maar je kunt het wel faken (als je geen controle hebt of het wel een sessie is of niet); dan maak je een url link, bv: www.forum.com/admin/admin.php?admin=1
het kost idd wel wat meer van je db, maar is dat de admin veiligheid niet waard?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 18 februari 2002 12:30 schreef jurriebur het volgende:
het is misschien niet van buitenaf te veranderen, maar je kunt het wel faken (als je geen controle hebt of het wel een sessie is of niet); dan maak je een url link, bv: www.forum.com/admin/admin.php?admin=1
het kost idd wel wat meer van je db, maar is dat de admin veiligheid niet waard?
IMHO kun je beter trackvars uitzetten, of met
PHP:
1
2
3
<?
$admin=$HTTP_SESSION_VARS["admin"];
?>

of met
PHP:
1
2
3
4
<?
$admin=0;
session_start();
?>

werken.

Dat zijn namelijk stuk voor stuk wat nettere oplossingen.

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


Verwijderd

die laatste lijkt mij het veiligst, want volgens mij kan je (ik niet) session vars faken. Die laatste is idd wel een veilige manier...
Pagina: 1