Archief - PHP: veilig scripten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bengie

Legacy Member
ben nu al een tijdje bezig met me te verdiepen in php... en het begint te lukken.

maar nu heb ik een vraagje over de veiligheid waarmee ik script.

is bvb. :
PHP:
<?php 
	include ("navigatie.php");
?>

een veilige manier om te includen op een gewone pagina (een gewone pagina waarbij je dus de frames vervangt door "include" , dus niet echt gebruik maken van scripts.

of dit :

PHP:
<?php 
						switch(@$_GET['pagina']) {
							case "1" : include "pagina1.php" ; break ;
							case "2" : include "pagina2" ; break ;
							default : include "nieuws.php"; break;
		};
	?>

is dit veilig???

Ik vind wel veel tutorials maar nergens een duidelijke uitleg of dit wel veilig is....


waar kan ik nog goede info vinden over veilig scripten?

Mvg
bengie

NeoNeke

Legacy Member
da's het inladen van code in uwen design en is redelijk safe (tweede)... nen switch met nen default zou ik me niet over storen, voor zover ik er weet van heb...

Maar waarom, waarom, doet niemand het omgekeerd:
laad uw headers en footers in de pagina met de content zoiets dus voor bijvoorbeeld pagina1.php:

PHP:
<?
include ("header.php");
// uw page content hier
?>
hei dit is pagina 1
<?
include ("footer.php");
?>

Dan heb je al die miserie niet met of het veilig is zo te doen of zo te doen: de pagina bestaat of ze bestaat niet en krijgt ge een 404 aan uw been...
Ge maakt gewoon nieuwe pagina aan als ge dat nodig hebt, geen nood in uw code te gaan prutsen om ervoor te zorgen dat die nieuwe pagina nu ook toegelaten wordt in uw switch statement, misschien wel header aanpassen voor ergens een link meer te zetten in het menu, maar dat moet ge dan ook doen in uw geval...

just my five years of experience with php, zou kunnen zijn dat ik heel stoem werk al vijf jaar lang, maar ik raad iedereen aan de headers en footers in te laden

Xavez

Legacy Member
Ik doe dat nochtans zo. En het werkt écht fijn! De reden waarom dat niemand dat doet, daarvoor moet je niet ver gaan zoeken denk ik. Inladen van een pagina is eigenlijk dezelfde denkwijze als een frame/iframe, iets waarvan héél veel webontwikkelaars komen als ze naar Serverside Scripting overstappen :).

Feit is ook dat er nergens echt een duidelijke tutorial bestaat over "the right way to do navigation" . Webstandaarden bestaan dan wel wat front-end code betreft, maar ik denk dat er ook nog heel wat guidelines mogen komen wat back-end betreft :). Als ik er zelf meer vanaf wist, zou ik er zelf aan beginnen schrijven :).

Bengie

Legacy Member
NeoNeke zei:
da's het inladen van code in uwen design en is redelijk safe (tweede)... nen switch met nen default zou ik me niet over storen, voor zover ik er weet van heb...

Maar waarom, waarom, doet niemand het omgekeerd:
laad uw headers en footers in de pagina met de content zoiets dus voor bijvoorbeeld pagina1.php:

PHP:
<?
include ("header.php");
// uw page content hier
?>
hei dit is pagina 1
<?
include ("footer.php");
?>

Dan heb je al die miserie niet met of het veilig is zo te doen of zo te doen: de pagina bestaat of ze bestaat niet en krijgt ge een 404 aan uw been...
Ge maakt gewoon nieuwe pagina aan als ge dat nodig hebt, geen nood in uw code te gaan prutsen om ervoor te zorgen dat die nieuwe pagina nu ook toegelaten wordt in uw switch statement, misschien wel header aanpassen voor ergens een link meer te zetten in het menu, maar dat moet ge dan ook doen in uw geval...

just my five years of experience with php, zou kunnen zijn dat ik heel stoem werk al vijf jaar lang, maar ik raad iedereen aan de headers en footers in te laden

zo doe ik het ook...
die switch functie gebruik ik voor iets anders

in ieder geval al bedankt voor de replies.
Ik ben nu al een pak geruster en kan rustig verder programmeren

Jellepunk

Legacy Member
ik gebruik die switch functie, ik doe het zelfs nog anders, kijk
PHP:
class PaginaKiezer{
	private $map;
	public function __construct($map, $pagina)
	{
		$this->setMap($map);
		$paginas	=	$this->uitlezen($map);
		if(in_array($pagina.".php", $paginas))
		{
			require_once($map."/".$pagina.".php");
		}
		else
		{
			echo "Pagina niet gevonden";
		}
	}
	public function setMap($map)
	{
		$this->map = $map;
	}
	public function uitlezen($map)
	{
		$paginas = array();
		if(is_dir($map))
		{
			// map uitlezen en in array opslaan
			$handle	=	opendir($map);
			while (false !== ($file = readdir($handle)))
			{
				if($file != "." && $file != ".." && !is_dir($map.$file))
				{
					array_push($paginas, $file);
				}
			}
			closedir($handle);
		}
		return $paginas;
	}
}
?>
persoonlijk vind ik dit super makkelijk, heb het 1 maal geschreven en kan het gemakkelijk implementeren, het is nog tamelijk nieuw, maar kheb nog nie veel getest...
Je kan geen pagina's inladen die niet bestaan of paginas die je niet wil inladen.
Nuja zolang je niet zo werkt:
PHP:
<?php
 include($_GET['paginanaam' . ".php");
?>
kzie het nut nie echt in van te werken met allemaal apparte paginas, is gewoon meer code :crazy:

Tyfius

Legacy Member
Ikzelf werk steeds vanuit mijn index.php. Ik heb dus een folder classes/ en een folder modules/. In classes/ zitten alle klassen die betrekking hebben tot het normale runnen van de website (database, template parser, error handler, ...) en in modules/ zitten al mijn pagina's.
In de url http://www.mijnsite.be/index.php/nieuws/singlepost/12 weet ik dat het 1ste item na de index.php mijn module is. Dan laat ik vervolgens mijn classloader alle class.*.php files in die module inladen. De naam van de folder waarin een module zit moet overeenkomen met de naam in de URL, alles anders is fout. In de constructor van de hoofdklasse van die module (class.nieuws.php) kijk ik dan na of er nog argumenten volgen, en roep ik de desbetreffende functies/klassen aan. (in dit geval zie ik dus dat het gaat om een singlepost en de laatste parameter heeft het ID van de post weer)

Rvl

Legacy Member
NeoNeke zei:
da's het inladen van code in uwen design en is redelijk safe (tweede)... nen switch met nen default zou ik me niet over storen, voor zover ik er weet van heb...

Maar waarom, waarom, doet niemand het omgekeerd:
laad uw headers en footers in de pagina met de content zoiets dus voor bijvoorbeeld pagina1.php:

PHP:
<?
include ("header.php");
// uw page content hier
?>
hei dit is pagina 1
<?
include ("footer.php");
?>
Ik ken er genoeg die het zo gebruiken hoor;)

Rvl

Legacy Member
Tyfius zei:
Ikzelf werk steeds vanuit mijn index.php. Ik heb dus een folder classes/ en een folder modules/. In classes/ zitten alle klassen die betrekking hebben tot het normale runnen van de website (database, template parser, error handler, ...) en in modules/ zitten al mijn pagina's.
In de url http://www.mijnsite.be/index.php/nieuws/singlepost/12 weet ik dat het 1ste item na de index.php mijn module is. Dan laat ik vervolgens mijn classloader alle class.*.php files in die module inladen. De naam van de folder waarin een module zit moet overeenkomen met de naam in de URL, alles anders is fout. In de constructor van de hoofdklasse van die module (class.nieuws.php) kijk ik dan na of er nog argumenten volgen, en roep ik de desbetreffende functies/klassen aan. (in dit geval zie ik dus dat het gaat om een singlepost en de laatste parameter heeft het ID van de post weer)
imo gebaseerd om een bestaand framework, ben zelf ook bezig aan zulk framework. Zeer mooi en handig om te coden.

Tyfius

Legacy Member
Jah, 't is niet echt een compleet CMS, maar ik ben begonnen met een set basisklassen indertijd en nu is't een redelijk OK framework. Die klassen krijgen af en toe een update indien het echt nodig is, en de modules maken het geheel zeer makkelijk.
Voor een nieuwe site is het eigelijk alleen aanpassen van de templates en de specifieke eisen van de functies.

orez

Legacy Member
sorry, maar uw topic wordt gesloten + een infraction hoor,
dit probleem staat letterlijk in de sticky's, in de webmastergids, wat er enkel op wijst dat je die niet gelezen hebt, laat staan de search hebt gebruikt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan