Likes Likes:  0
Resultaten 1 tot 12 van de 12
Geen

Onderwerp: Include beveiliging

  1. #1
    Include beveiliging
    geregistreerd gebruiker
    288 Berichten
    Ingeschreven
    23/05/04

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked



    Thread Starter

    Include beveiliging

    Hoi,

    Heeft iemand de PHP code voor een include beveiliging, zodat je niet onbedoelde mappen kunt includen? Het gaat via de link, bijv. page.php?paginateincluden. Als je nu ../../ doet, kun je in de hogere dir komen en dan weer andere dingen includen. Wat natuurlijk kan is elke pagina die ge-include mag worden in een variabele opslaan, maar dat is ook zo'n gedoe. Dan is het ook vervelend als je er een pagina bij maakt, dan zou je dat bij elke pagina waar die variabelen staan die pagina moeten toevoegen (al zou je dat natuurlijk óók weer kunnen includen, maar zo blijf je bezig).

    Dus, wie heeft er zo'n beveiliging (PHP) scriptje?

    Groeten, Peter

  2. #2
    Include beveiliging
    Mentally unstable
    2.586 Berichten
    Ingeschreven
    27/06/03

    Locatie
    Rivierenland

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: Ja
    KvK nummer: 11058224
    Ondernemingsnummer: nvt

    mogelijke oplossingen:
    1. gebruik 'switch'
    2. gebruik een array met de pagina's die geincluded mogen worden en gebruik of een ID of gewoon de naam icm in_array
    3. gewoon via ID's en ifjes werken :P (ranzig)

    ga gewoon voor optie 1

    dus:

    Code:
    switch($_GET["page"])
    {
       case 1:
           require_once("pages/includeme.php");
           break;
       case 2:
           require_once("pages/lala.php");
           break;
        default:
           require_once("pages/welcome.php");
           break;
    }

  3. #3
    Include beveiliging
    The anonymous BOFH
    665 Berichten
    Ingeschreven
    28/06/04

    Locatie
    nvt

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nvt
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    een beetje offtopic:

    Hebben jullie nu pas door dat E-Dentify.nl lek is?

    een beetje meer ontopic:

    Je kan ook werken met aparte .php files, dit is veel veiliger en handiger dan een site met allemaal includes. Iets handiger hiervoor is output buffering, zie php.net

  4. #4
    Include beveiliging
    Deze gebruiker is geblokkeerd!
    484 Berichten
    Ingeschreven
    16/02/04

    Locatie
    Twente

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    KvK nummer: 8124412

    tip; leer modulair werken.

    Ik heb Budget Trends zo in elkaar gezet dat hij bepaalde vars verwacht en niet daarbuiten kan.

    Bijvoorbeeld,

    index/module/pages/
    hij laad nu de module pages uit de database, kijkt of die bestaat en include de bijbehorende file.

    Zo kun je nooit in de balk zetten welke pagina hij moet includen maar zit je altijd aan een module naam.

    Mocht je hulp nodig hebben dan wil ik je wel ff helpen per mail of messenger. Schiet me daarover maar even aan.

  5. #5
    Include beveiliging
    geregistreerd gebruiker
    1.084 Berichten
    Ingeschreven
    17/02/03

    Locatie
    Hoorn

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    5 Berichten zijn liked


    Naam: Raymond Karsten
    KvK nummer: 37109993
    Ondernemingsnummer: nvt

    Weet 't niet zeker maar volgens mij is dit een goede:

    PHP Code:
    <?
    if(!empty($_GET['id'])) {
       $include="html/".str_replace('../','',$_GET['id']).".htm";
    } else {
       $include='html/welkom.htm';                }
    @include($include);
     ?>

  6. #6
    Include beveiliging
    geregistreerd gebruiker
    288 Berichten
    Ingeschreven
    23/05/04

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked



    Thread Starter
    Origineel geplaatst door wv-
    een beetje offtopic:

    Hebben jullie nu pas door dat E-Dentify.nl lek is?
    Nee natuurlijk niet.

  7. #7
    Include beveiliging
    Deze gebruiker is geblokkeerd!
    484 Berichten
    Ingeschreven
    16/02/04

    Locatie
    Twente

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    KvK nummer: 8124412

    Origineel geplaatst door RayManZ
    Weet 't niet zeker maar volgens mij is dit een goede:

    PHP Code:
    <?
    if(!empty($_GET['id'])) {
       $include="html/".str_replace('../','',$_GET['id']).".htm";
    } else {
       $include='html/welkom.htm';                }
    @include($include);
     ?>
    Beetje onzin om het zo te doen, maar het zou kunnen.

    PHP Code:
    <?php

    if(isset($_GET['id']) && !empty($_GET['id'])) {

       
    $include = "html/" . str_replace('../', '', $_GET['id']) . ".htm";

    } 
    else {

       
    $include = 'html/welkom.htm';
    }

    include(
    $include);

    ?>
    Maar ik zou toch aanraden het anders op te lossen en niets via de URLbalk te includen.

  8. #8
    Include beveiliging
    Hostingontwikkelaar
    2.882 Berichten
    Ingeschreven
    03/07/04

    Locatie
    Maastricht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    9 Berichten zijn liked


    Naam: Tim
    Registrar SIDN: Ja
    KvK nummer: 59418095
    Ondernemingsnummer: nvt

    Nog geen echt antwoord gezien hierboven. Ook E-dentify heeft in zijn logs vast mij wel al eens aant proberen gezien. Inderdaad lek als een mandje. De oplossing is door elke link te cappen per directorie. De meesten van ons openen zo een plaatje op een link:

    PHP Code:
    <?
    //url: [url]http://www.e-dentify.nl/?nav=home&blaat=blaat[/url]
    $nav = "$nav.php";
    include("$nav");
    ?>
    Wat erop neer komt dat je 'pagina.php include'. Dit is absoluut niet veilig. Denk aan linux, denk aan ssh, je shell. Je kunt er niet uit als een directorie ./ is, dus passen we het script aan tot het dit is:

    PHP Code:
    <?
    //url: [url]http://www.e-dentify.nl/?nav=home&blaat=blaat[/url]
    $nav = $_GET['nav'];
    if($nav == '') { $nav = 'home'; } //nu kunnen ze zobiezo al geen lege paginas opgeven waardoor errors ontstaan.

    //Strip ALLES Behalve abcdefg..xyz-_01234567890
    function getnav($nav1)
        {
        $nav1 = strtolower($nav1);
        $nav1 = preg_replace("/[^a-z0-9\-\_]/i", "", $nav1); 
        return $nav1;
        }

    $nav = getnav($nav); //Nu strip je dus alles, dus in feite kunnen ze nu al niks meer, maar we gaan het nog een stukkie veiliger maken, beveiligen geniet ik van ;)

    $nav = "./includes/$nav.php"; // de './' zodat enkel bestanden uit die map en onderliggende gepakt kunnen worden en niet een map hoger.

    @require($nav); //De @ om errors te voorkomen waardoor ze info kunnen achterhalen :)
    ?>
    En in de includes map, of gewoon in de webroot een .htaccess file aanmaken met inhoud:

    Options -Indexes
    Nu weet je precies wat je nodig hebt om ook jouw gat te dichten, veel plezier ermee ;)

    Groeten,

    Tim

  9. #9
    Include beveiliging
    Ondernemer
    1.208 Berichten
    Ingeschreven
    09/06/04

    Locatie
    Arnhem

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Er is ook nog een andere manier, kijk met een scriptje welke bestanden er in de map staan, zet deze bestanden in een array en ga vervolgens kijken welke pagina uit die array moet includen.

    Deze manier heb ik net bedacht, lijkt me goed mogelijk.. zal zeker eens kijken of ik tijd heb om het te maken.

    Groeten

  10. #10
    Include beveiliging
    geregistreerd gebruiker
    1.913 Berichten
    Ingeschreven
    23/10/03

    Locatie
    Enschede (+ London)

    Post Thanks / Like
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    33 Berichten zijn liked


    Naam: Max
    Registrar SIDN: ja
    KvK nummer: 08119406
    Ondernemingsnummer: -

    Met regex is inderdaad het simpelste.
    Je kan de speciale tekens eruit filteren zoals Tim doet of gewoon het script afbreken als ze erin zitten:

    Code:
    if ( ereg('^[[:alnum:]_-]+$', $_GET['paginatje']) )
        @require_once($_GET['paginatje'].'.php');
    else
        die("Not allowed");

  11. #11
    Include beveiliging
    geregistreerd gebruiker
    375 Berichten
    Ingeschreven
    18/05/04

    Locatie
    Utrecht

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    1 Berichten zijn liked


    Naam: Ivo

    Ik zou voor de volgende oplossing gaan:

    - zet alle bestanden die je wilt includen in één sub dir
    - schrijf een systeem wat alleen files uit die sub dir kan includen

    Kortom veilig en makkelijk.

  12. #12
    Include beveiliging
    Actieve deelnemer
    1.249 Berichten
    Ingeschreven
    15/04/03

    Locatie
    Enschede

    Post Thanks / Like
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    5 Berichten zijn liked


    Bedrijf: Antagonist / Patchman
    Functie: CEO
    Registrar SIDN: ja
    KvK nummer: 09136441

    Zoals The MAzTER al zei: Gebruik switch of zet alle mogelijke opties in een array. Op die manier weet je ALTIJD zeker dat alleen de pagina's geinclude worden die ook van jou geinclude mogen worden.

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics