Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ja tietoturva?

OskariB [02.02.2007 01:34:26]

#

<?php
if(!isset($_GET["sivu"])) { $sivu = "etusivu"; }
else { $sivu = $_GET["sivu"]; }
if(!file_exists($sivu . ".php")) { $sivu = "error"; }
include($sivu . ".php");
?>

Voisiko joku viisaampi kertoa, piileekö tässä jokin tietoturva- aukko?

Merri [02.02.2007 02:35:29]

#

Minä poistaisin ainakin replacella kaikki pisteet ja kauttamerkit, ettei palvelimelta/sivutilalta voitaisi liittää mitä tahansa PHP-sivua.

Voisit myös estää sivua lataamasta itseään.

Tosin, jos muutenkin teet kaikki erillisinä PHP-sivuina ja käytät yhtä keskitettyä sivua saadaksesi nätimmät urlit, niin voisit sen sijaan harkita sitä, että teet hakemistoja ja pönkkäät sinne sivut index.php:na. Saat todella nätit urlit ja vaiva on samaa luokkaa kuin sen kanssa mitä nyt teet.

OskariB [02.02.2007 03:18:56]

#

Pieni selvennys, eli tänään tutustun ensimmäisen kerran PHP:n ihmeelliseen maailmaan. Hakukoneilla olen etsinyt apua dynaamisten sivujen luontiin ja päädyin tuohon vaihtoehtoon.

Merri kirjoitti:

Tosin, jos muutenkin teet kaikki erillisinä PHP-sivuina ja käytät yhtä keskitettyä sivua saadaksesi nätimmät urlit, niin voisit sen sijaan harkita sitä, että teet hakemistoja ja pönkkäät sinne sivut index.php:na. Saat todella nätit urlit ja vaiva on samaa luokkaa kuin sen kanssa mitä nyt teet.

Kävin tutustumassa tuohon sivustoosi, ilmeisesti itse käytät mainitsemaasi toteutustapaa. Jos haluat muuttaa linkkejä, joudutko tekemään muutokset jokaiseen index.php- tiedostoon?

Merri [02.02.2007 03:42:37]

#

Tarkoitatko sivupaneelia/valikkoa? Ei tarvitse, minulla on erillinen template.php jossa on sivun header ja footer. Elikkä koodini on tätä luokkaa:

<?php

require_once('./template.php');
generate_header('Sivun nimi');

?>

<h1>Tähän tulee sivun normaali sisältö</h1>
<p>Jee.</p>

<?php

generate_footer();

?>
<?php

function generate_header($title) {
	// aloita sivun pakkaaminen
	ob_start('ob_gzhandler');
	?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<?php
	if ($title == '') {
		echo '
		<title>Sivuston nimi</title>';
	} else {
		echo '
		<title>'.$title.' &ndash; Sivuston nimi</title>';
	}
?>
	</head>
	<body>
<?php
}

function generate_footer() {
?>
	</body>
</html><?php
	// lähetä sivu
	ob_end_flush();
}

?>

Yksinkertaistin tuota aika rankasti. Jokatapauksessa kaikki sivut toimivat saman ulkoasupohjan kautta.

OskariB [04.02.2007 02:02:20]

#

Kiitokset tuosta, sovelsin sitä omalle sivustolleni. Yhteen ongelmaan kuitenkin törmäsin.

Esimerkiksi kansion Valokuvat sisällä oleva index.php ei suostu hakemaan tuota template.php:tä. Toimii kyllä silloin, kun index.php ja template.php sijaitsevat samassa kansiossa.

<?php

require_once('./template.php');
generate_header('Valokuvat');

?>

Tähän on jokin lapsellisen helppo ratkaisu, mutta itse en sitä millään keksi.

EDIT
Lapsellisen helppoa. Template.php:n linkki erilliseen tyylitiedostoon piti muuttaa oikeanlaiseksi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta