Bygger en webplats och använder mig mycket av att ladda in funktioner och annat med include.
Tex. kopplar jag upp mig mot databasen genom:
include '../connect.php';
Men hur säkert är detta?
Kan någon från sin sida skriva typ:
include 'www.minsida.com/connect.php';
Något mer man bör tänka på när det kommer till include och säkerhet?
På min webbplats kan man logga in, och då sätts SESSION vilket även kontrolleras på varje sida, men det kontrolleras ju inte i include-filerna att SESSION är satt, bör man göra en sådan test i varje include-fil också?
Jag har alltid en definitionsfil där jag anger den absoluta sökvägen till hemsidan, t.ex.
define("ROOTPATH", "/home/xcv/fgh/min_hemsida/");
Sen inkluderar jag med:
require(ROOTPATH . "inc/min-fil.php");
Vad du även kan göra är att på dina "vanliga" sidor ha det här i början:
define("IS_OKAY", true);
I början av filerna du inkluderar kör du:
if(!is_defined("IS_OKAY")) die("No no no!");
Det gör att filerna inte kommer kunna köras "direkt", utan dom kommer bara att exekveras om dom inkluderas (alltså om "IS_OKAY" är satt till true).
Vad du också kan (och faktiskt borde) göra är att ha config-filer, databaskoppling osv. utanför webbroten (utanför din public_html), dom går fortfarande att inkludera enligt mitt sätt ovan, men dom kan aldrig, aldrig, aldrig nås direkt från webbläsaren.
Sen hänger det ju givetvis på vad du har på den includade filen. Om du har en säker funktion för att anropa din fil, kan den anropade filen se för jä**lig ut ur säkerhetssynpunkt. I den includade filen. Bara för att ta ett otroligt dumt exempel så är det inte vettigt att ha ett säkert tillvägagångssätt för att anropa en databaskoppling och att du i den filen du anropar skriver
<?php
$dbuser = användarnamn;
$dbpass = lösenord;
echo $dbuser . " " . $dbpass;
?>
Mycket hänger på hur hög säkerhet du har på din fil du inkluderar kort och gott...
124 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe