[php] - functie vraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een systeem wat uit modules bestaat. Nou kan ik dus via de url (http://test.nl/admin.php?module=test&functie=test) een functie binnen een module aanroepen. Maar als ik van functie=phpinfo maak, dan kan ik phpcommando's uitvoeren, dit moet dus niet... Hoe kan ik ervoor zorgen dat dit niet gebeurd?

[ Voor 4% gewijzigd door Verwijderd op 25-02-2003 10:47 ]


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

Welkom in Programming & Webscripting :)

Het zou handig zijn als je eens wat van je code neer zou zetten, want wij kunnen niet raden wat er allemaal in je script zit.

En lees ook:
Welkom in P&W -> Quickstart (update 2/10/2002)

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Zie dit bijv:
http://www.php.net/manual...get-defined-functions.php
icm in_array kom je aardig ver denk ik.
of
http://www.php.net/manual/en/function.call-user-func.php
(kweet eigenlijk niet of die laatste je verbiedt phpfuncties te gebruiken)

[ Voor 9% gewijzigd door ACM op 25-02-2003 10:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok hier een stukje code:


control.php?module=test&content=testing

PHP:
1
2
3
4
5
6
7
8
9
if( isset( $_GET["module"] ) ){
        $s_module = $_GET["module"];
    }
    if( isset( $_GET["content"] ) ){
        $s_content = $_GET["content"];
    }

include $s_module.".inc";
$s_content();


Hoe kan ik ervoor zorgen dat ik alleen de functies kan aanroepen uit het ge-include bestand?

[ Voor 47% gewijzigd door Verwijderd op 25-02-2003 11:00 ]


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

Maak een array aan met alle functies de wel mogen, en check of $_GET["content"] wel in die array zit.
En $s_content(); ziet er vies uit, en dan is het dus handiger om switch () te gebruiken.

PHP:
1
2
3
4
5
6
7
8
9
10
switch ($_GET['content'])
{
    case 'test':
        hier_je_test_functie ();
        break;

    case 'melp':
        doe_iets ();
        break;
}

[ Voor 8% gewijzigd door Tux op 25-02-2003 11:02 ]

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 25 February 2003 @ 10:47:
Ik ben bezig met een systeem wat uit modules bestaat. Nou kan ik dus via de url (http://test.nl/admin.php?module=test&functie=test) een functie binnen een module aanroepen. Maar als ik van functie=phpinfo maak, dan kan ik phpcommando's uitvoeren, dit moet dus niet... Hoe kan ik ervoor zorgen dat dit niet gebeurd?


als je een dergelijk systeem op wilt zetten zul je gewoon moeten controleren of de opgegeven functie in de opgegeven module wel aangeroepen mag worden.
Een boom-structuur met daarin alle modules en functies die in die module staan die allemaal aangeroepen mogen worden lijkt mij het makkelijkst

zodat je zoiets kunt doen:

PHP:
1
2
3
4
5
6
7
8
if (isset ($allowed_functions[$module]) && in_array ($function, $allowed_functions[$module]))
{
    // doe hier je aanroep
}
else
{
    // mag niet!
}


en dan moet je de array $allowed_functions gewoon vullen met de modules en functies: bijvoorbeeld
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$allowed_functions = array
(
    "module1" => array
    (
        "func1",
        "func2",
        "func3"
    ),

    "module2" => array
    (
        "func1",
        "func2"
    )
)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 25 February 2003 @ 11:05:

[...]


als je een dergelijk systeem op wilt zetten zul je gewoon moeten controleren of de opgegeven functie in de opgegeven module wel aangeroepen mag worden.
Een boom-structuur met daarin alle modules en functies die in die module staan die allemaal aangeroepen mogen worden lijkt mij het makkelijkst

zodat je zoiets kunt doen:

PHP:
1
2
3
4
5
6
7
8
if (isset ($allowed_functions[$module]) && in_array ($function, $allowed_functions[$module]))
{
    // doe hier je aanroep
}
else
{
    // mag niet!
}


en dan moet je de array $allowed_functions gewoon vullen met de modules en functies: bijvoorbeeld
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$allowed_functions = array
(
    "module1" => array
    (
        "func1",
        "func2",
        "func3"
    ),

    "module2" => array
    (
        "func1",
        "func2"
    )
)
Das een goed idee... Alvast bedankt... _/-\o_
Pagina: 1