Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zabezpieczenie przed bezpośrednim wejściem(problem)
FANGTA
post 28.09.2008, 19:12:05
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.09.2008

Ostrzeżenie: (0%)
-----


Witam.

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();
    ?>


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


Ten post edytował FANGTA 28.09.2008, 20:04:48
Go to the top of the page
+Quote Post
michalkjp
post 28.09.2008, 19:34:27
Post #2





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Hmmm...

"W moim pliku bazie jest wszystko załączane za pomocą iframów"

Już się nie pytam dlaczego używasz iframe, chciałbym się dowiedzieć dlaczego używasz pliku zamiast normalnej bazy danych. Sorry za mało konstruktywny komentarz, ale ciekawość mnie zżera smile.gif
Go to the top of the page
+Quote Post
FANGTA
post 28.09.2008, 20:00:02
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.09.2008

Ostrzeżenie: (0%)
-----


"Hmmm...

"W moim pliku bazie jest wszystko załączane za pomocą iframów"

Już się nie pytam dlaczego używasz iframe, chciałbym się dowiedzieć dlaczego używasz pliku zamiast normalnej bazy danych. Sorry za mało konstruktywny komentarz, ale ciekawość mnie zżera smile.gif "

Eh widać że źle zrozumiałeś;] używam oczywiście zewnętrznej bazy danych typu np. mysql a ten plik-baza to nie baza danych tekstowa tylko plik na ftp normalny pisany w php zawierający instrukcje z iframami itd.;] widze że niektórzy biorą to określenie jako baze danych więc dodam do swojego postu odpowiednią notke;)ps. i może dlatego tak zrozumiałeś że zapomniałęm dodać zabezpieczenie przed bezpośrednim wejściem do pliku;]

Ten post edytował FANGTA 28.09.2008, 20:05:34
Go to the top of the page
+Quote Post
Pilsener
post 29.09.2008, 08:26:58
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
np. uniknąć złego wyświetlenia, lub pokazania informacji które nie powinny być wyświetlone bezpośrednio użytkownikom
- po to jest system autoryzacji, po co się tak męczysz? Wygląda na to, że skrypt został po prostu beznadziejnie pomyślany stąd problem. Jak nie chcesz przekazywać zmiennych sesją lub GET'em, to użyj COOKIE lub pliku tymczasowego. A tak w ogóle to ciężko zrozumieć, w czym jest problem szczerze powiedziawszy...
Go to the top of the page
+Quote Post
mecenas
post 29.09.2008, 10:01:25
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

Ostrzeżenie: (0%)
-----


Pilsener ma rację. Przemyślany system autoryzacji załatwia sprawę. Dodatkowo dzięki stworzenie wielopoziomowego dostępu możesz sobie zostawić furtkę do plików, których standardowy admin nie będzie mógł ruszyć.

Lepiej spędzić nawet kilka godzin nad kartką żeby wszystko przemyśleć niż potem całymi dniami modyfikować kod w celu osiągnięcia oczekiwanego efektu. Nie na tym polega RAD winksmiley.jpg


--------------------
-- http://rafaljakubowski.net76.net --
google's my life ;)
Go to the top of the page
+Quote Post
FANGTA
post 29.09.2008, 12:11:24
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.09.2008

Ostrzeżenie: (0%)
-----


eh coś mi sie zdaje że źle zrozumieliście mój problem, albo ja go po prostu źle opisałem.

Więc sie postaram uzupełnić troche mój opis żeby był jaśniejszy:

oto mniej więcej schemat:

Plik główny np.o nazwie index.htm i w nim wczytywane poszczególne pliki np. s.htm,b.php, za pomocą ramek lokalnych <iframe></iframe> i o to chodzi że sie da kliknąć na ramce w np. mozilli otwórz ramke w nowej karcie i to zabezpieczenie ma powodować takie coś, żeby te ramki mogły sie poprawnie wyświetlić tylko jeśli są wczytywane z pliku index.htm, a jeśli są wczytywane oddzielnie czyli np. w taki powyższy sposób prawym i otwórz ramke w nowej karcie to wtedy sie wyświetli komunikat np. ERROR NOT FOUND i po 2 sekundach przekieruje do strony głównej. I w podobny sposób np. w phpBB służy stała tylko że tam nie używają ramek lecz funkcji require i include(i wtedy to działa) a ja tak postąpić nie moge;]
Go to the top of the page
+Quote Post
misiek172
post 29.09.2008, 14:07:11
Post #7





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


hmm ...

Może po prostu sprawdzaj adres jaki jest wpisany, zapoznaj się z tablicą $_SERVER questionmark.gif

Rozumiem że nie chcesz aby ktoś mógł sam otworzyć okno podrzędne? Tylko index.php aby mógł wyświetlać inne pliki php i html

ja tak zrozumiałem twój problem


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
Pilsener
post 30.09.2008, 08:15:18
Post #8





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Nie da się tak zrobić - jak chcesz wymusić, czy ja otworzę sobie stronę w tym samym oknie czy w nowym? To jest całkowicie po stronie użytkownika.
Go to the top of the page
+Quote Post
FANGTA
post 30.09.2008, 17:02:04
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.09.2008

Ostrzeżenie: (0%)
-----


Cytat(misiek172 @ 29.09.2008, 15:07:11 ) *
hmm ...

Może po prostu sprawdzaj adres jaki jest wpisany, zapoznaj się z tablicą $_SERVER questionmark.gif

Rozumiem że nie chcesz aby ktoś mógł sam otworzyć okno podrzędne? Tylko index.php aby mógł wyświetlać inne pliki php i html

ja tak zrozumiałem twój problem


tak dokładnie o to chodzi że w każdym pliku któy jest wczytywany do indexu jest sprawdzenie odpowiednie czy stała jest zdefiniowana(a definiowana jest tylko w index.php)

Cytat(Pilsener @ 30.09.2008, 09:15:18 ) *
Nie da się tak zrobić - jak chcesz wymusić, czy ja otworzę sobie stronę w tym samym oknie czy w nowym? To jest całkowicie po stronie użytkownika.


Tu nie chodzi o okno tylko o ramki lokalne i to co sie do nich wczytuje mogło być uruchonmione tylko w tej ramce lokalnej i nie bez niej ani sama ramka bez pliku głównego, i to nie można tylko po stronie użytkownika chociaż ciekawy pomysł i thx za podpowiedź może w tym sposobie bede mógł zastąpić sprawdzenie czy stała jest zdefiniowana jakimś działaniem po stronie użytkownika:) A co do tego w php to dam odsyłacz do tutka o tym: http://webmade.org/porady/zabezpieczenie-skryptu-php.php i ja robie coś w tym rodzaju tylko problem napotykam jeśli to sprawdzenie czy stałą zdefiniowana dodam w ramke lokalną, a stała jest zdefiniowana nie w ramce lokalnej(ponieważ nie ma sensu definiować stałej zaraz przed sprawdzeniem bo zawsze będzie że tak;])
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2024 - 15:07