Ostatnio zainteresowałem sie zabezpieczeniem przed bezpośrednim wejściem do pliku, żeby np. uniknąć złego wyświetlenia, lub pokazania informacji które nie powinny być wyświetlone bezpośrednio użytkownikom, lub osobno bez wyświetlenia poprzez tzw. Plik-baze.
W moim pliku bazie jest wszystko załączane za pomocą iframów, i mam taki problem że jeśli zdefiniuje stałą na początku pliku-bazy np.:
Kod
define('IN_GMAS_PHP', true);
I użyje w każdym pliku wczytywanym np. do ramki lokalnej:
Kod
<iframe name="serwis" id="glowna_ramka" src="serwis_GMAS.html" width="901" height="1011" frameborder="0"></iframe>
Takiego kodu sprawdzającego czy stała została zdefiniowana:
Kod
<?php
ob_start();
if (!defined('IN_GMAS_PHP')) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://'.$_SERVER['HTTP_HOST'].'/');
exit();
}
ob_end_flush();
?>
ob_start();
if (!defined('IN_GMAS_PHP')) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://'.$_SERVER['HTTP_HOST'].'/');
exit();
}
ob_end_flush();
?>
To nawet i tak rozpoznaje że nie;/ i już nawet wiem w czym jest problem bo jeśli załącze zwykłym include lub require ten plik lub w pliku zdefiniuje stałą to to działa idealnie więc problem ejst w tym że pliki są wczytywane w pliku-bazie poprzez ramki lokalne, lecz ja z tego sposobu wczytywania przy tworzeniu pewnej strony nei moge zrezygnować;/ Wiadomo że można by też stowrzyć zmienną i posłużyć sie metodą $_GET lecz to nie gra roli bo nawet najgłupszy i najgorszy haker będzie potrafił odpowiednio przypisać wartość i zmienną po zauważeniu nazwy zmiennej i wartości jaką musi mieć.
Za pomocą sesji też odpada ponieważ sesyjna jest zapamiętywana aż do końca sesji, więc jak ktoś otworzy podstrone w nowej karcie to i tak mu sie wyświetli jeśli bedzie zabezpieczone takim sposobem.
Więc może ktoś by znał jakiś sposób ze stałą i żeby w tym przypaku działał jak należy lub znał inny równie dobry sposób zabezpieczający przed bezpośrednim wejściem i działający w takim przypadku?
PS. używając określenia "pliku-bazie" nie mam na myśli bazy danych tekstowej na ftp tylko plik zwykły w którym jest kod php i html i js itd. i w nim są różne pliki załączane funkcjami require i include a także iframe