og jeg linker jo til det via: index.php?page=test1
er der nogen der kan fortælle hvad der går galt. jeg har jo self kigget efter om der står et 1 tal når jeg laver det men det er problemet det gør der ikke?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Mange tak for hjælpem så blev jeg da lige det klogre vil du have dine poing dennismp ? så lav lige et svar, ellers kan du jo også vælge og lave vær, og lave mig beholde dem :P
<?php $side = $_GET['page']; // Henter side information fra adresselinjen if ($page == ""){ // Hvis der ikke er angivet nogen side, så må det jo være forsiden. $page = "forsiden.php"; // og her angives den fil som er forsiden } if(!@file_exists($page)) { $page = "404.php"; }; // Hvis $side ikke findes så inkludere vi en fejl side i stedet. ?>
1) Du kan ikke lave en rigtig 404 side.. hvis jeg skriver et filnavnet der ikke findes, så får du alligevel default siden. Brug .htaccess til at lave en rigtig 404.
2) Jeg kan dermed inkluderer samtlige filer på dit filsystem og dermed få indsigt i ting jeg ikke bør kunne få. Det er et sikkerhedshul.
kan du skære det ud i pap for mig jeg er helt ny i php
svar til: Nej, den er ikke smart.
1) Du kan ikke lave en rigtig 404 side.. hvis jeg skriver et filnavnet der ikke findes, så får du alligevel default siden. Brug .htaccess til at lave en rigtig 404.
2) Jeg kan dermed inkluderer samtlige filer på dit filsystem og dermed få indsigt i ting jeg ikke bør kunne få. Det er et sikkerhedshul.
det vil den "404" fange, fordi du ikke har en fil der hedder asdef.
Men hvis du prøver: ditside.dk/images/engiffil.gif
så vil du jo ikke bruge index.php - og dermed vil du ikke få din egen 404. Derfor er det ikke en rigtig 404 :) (Det er meget begrænset hvad den vil fange)
2) sikkerhedshul.
Jeg kan inkluderer alle filer.. Fx index.php?page=/etc/passwd index.php?page=database.inc
så kan jeg se hvilke brugerer der er på systemet.. Og jeg kan se mange andre ting. Hvis jeg er på samme webhotel eksempelvis, så kan jeg få dit script til at bruge min egen phpkode, og så kan jeg ødelægge alt det jeg har lyst til... Og der findes mange andre tricks - det er bare et spørgsmål om fantasi.
morteeart; Jeg går ud fra at du tænker på .htaccess? .htaccess er ikke understøttet af php (direkte). Så php kan læse alle filer, ligemeget om der er "password" (.htaccess) eller ej.
// $menu indeholder alle lovlige filer der må kaldes. Hvis page=test1, så inkluderes filen test2.php .. osv. Tilføj selv flere. $menu = array('test1'=>'test2.php','test2'=>'test2.php', 'test3'=>'test3.php', 'test4'=>'test4.php', 'test5'=>'test5.php' );
$page = $_GET['page']; if(! isset($menu[$_GET['page']) ) { // Default side hvis intet er angivet eller noget ugyldigt er valgt. $page = 'test1'; }
include($menu[$page]);
...
Man kan også lave en tjekt på filen og se om den ligger inden i et ønsket directory. Men det er nemmere at gøre dette (som basalt set er det samme som nyhuusdk gør - bare med arrays)
Nej. PHP bruger ikke .htaccess. Den tilgår filsystemet - og den kender ikke til .htaccess eller hvad den betyder.
Det er besværligt at lave tjeks på sine ting - og det er også besværligt at tjekke retur-koder. Men derfor bør man alligevel. Og det tager fornemtlig længere tid at kode test27.php end det gør at indsætte den i et array alligevel - så problemet er ikke så stort.
Du kan let undgå at dine php filer ikke bliver vist, som du selv er inde på. Men hvad med alle de andre filer på systemet? Klassikeren er jo /etc/passwd. Den kan alle se, og det er man normalt ikke interesseret i.
Og nu hvor nyhuusdk bruger if() sætninger, syntes jeg han skal forsætte med det - det er han jo fortroligt med :).
Din måde er fin, fordi brugeren ikke kan få inkluderet andre filer via $_GET['page'] end dem du har i din if()-sætninger - så han kan ikke gøre noget uventet (hvis han fx skriver index.php?page=futtog - så vil du jo bare vise min_forside.php - ingen alarm).. Så forsæt du bare :)
Du laver en .htaccess i din rod-bibliotek og i den skriv:
ErrorDocument 404 /error404.php
Så kan du bare lave filen error404.php og vise en fejlbesked
Der er vist noget med, at hvis siden fylder under 512 (eller var det 1024?) bytes, så viser IE ikke selve siden, men dens egen 404 side. Det skal du være opmærksom på når du laver den. (Ellers test med en anden browser)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.