Autor Zpráva
Ratio
Profil *
Dobrý, začinám programovat v PHP a potřebuju poradit s odkazem a zpracováním odkazu typu <a href="index.php?stranka=page">.
v index .php se to snažím spracovat následovně:

$stranka = $_get["stranka"];
if (isset($stranka)) {
 include $stranka.".inc";}
else {
 inlcude "index.inc";
 }


před i po tomto kodu jsou dalsi includy, jakou dělám chybu?
díky moc za pomoc

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Keeehi
Profil
Velká písmena
$stranka = $_GET["stranka"];
A tu podmínku bych přepsal takto:
if (!empty($stranka)) {
Ratio
Profil *
aha, to mě nikdy nenepadlo, že je tak duležite, díky moc
lingvik
Profil
Ratio:
Drobná rada do začátku: tento způsob includování skriptů je docela solidní bezpečnostní díra. Ještě lepší podmínka než v #2 je použít přímo whitelist. Např.:
if (in_array($stranka, array('novinky', 'fotky', 'fotogalerie', 'kontakty'))) {
Při stávající implementaci hrozí, že potenciální útočník přesvědčí server, aby includoval nějaký nevhodný soubor. Co kdybych zadal do prohlížeče třeba: "stranka.php?page=http://muj.server.cz/muj_hnusny_skript" Říká se tomu Remote File Inclusion, další varianta je Local File Inclusion.
AM_
Profil
existuje i jednodušší ochrana, např.
include 'stranky/'.preg_replace('~[^a-z0-9]~i', '', $stranka).'.inc';

A všechny inc soubory uložit do separé složky. Tím je možné vložit jen inc soubory z dané složky, útočník např. nemůže vložit absolutní URL, ale ani nic jiného potenciálně nebezpečného. A je to rychlejší, než si psát whitelist.

Ještě jedna rada, includovaným souborům bych dával příponu .php; v zájmu bezpečnosti je dobré útočníkovi neumožnit, aby si zobrazil PHP kód. Pokud zadám http://example.com/stranky/ovozeaokoze.inc , prohlédnu si PHP kód v tomto souboru, pokud to bude PHP, tak se k souboru nedostanu. Nebo alespoň pomocí souboru .htaccess s obsahem
deny from all

zakázat přístup do adresáře /stranky/.
Ratio
Profil *
jeste takova otazka, nedavno jsem se ptal na tuto otazku jednoho webdesignera, a poradil mi program Nette Framework, co naněj říkate vy? mě přijde zbytečně složitý, ale možná je to jen můj názor
AM_
Profil
Ratio:
v PHP programuju pět let, teď jsem Nette začal objevovat a cítím se jak Alenka v říši divů.
Pokud to chceš s PHP někam dotáhnout, Nette je poměrně robustní a mocný nástroj, ve kterém můžeš rychle a efektivně tvořit malé weby, ale i složité aplikace. Nicméně to vyžaduje studovat a pochopit principy MVP architektury a konkrétně tohoto frameworku, dokumentace bohužel stojí za kulové, takže je potřeba se hodně snažit a přečíst si, co se dá. Výsledek za to ale asi bude stát, nicméně už jsem zjistil, že za den se to naučit nedá. Pokud jsi začátečník, nejdřív bys měl pochopit objektové programování a PHP, než se pustíš do Nette. Pravdou je, že složitý je.
Pokud se chystáš udělat dva weby v životě, asi se ti nette nevyplatí, ale až budeš dělat třeba pátý web a budeš pořád dokola řešit ty samé nedomyšlenosti a zdlouhavosti PHP a HTML, zjistíš, proč existují věci jako Nette.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0