Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bezpieczeństwo skryptu
morphi99
post 21.06.2008, 21:59:34
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 2
Dołączył: 16.02.2008

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


W jakim stopniu ten skrypt jest bezpieczny, jeśli zawiera błędy to jak go poprawić ?
Kod
<?php
if ($_GET['page'] && file_exists('pages/' . $_GET['page'] . '.php') && strpos($_GET['page'], '../') === false)
{
   include 'pages/' . $_GET['page'] . '.php';
}
else
{
   echo ('Taka strona nie istnieje');
}
?>


Ten post edytował morphi99 22.06.2008, 08:56:39
Go to the top of the page
+Quote Post
Xniver
post 21.06.2008, 23:09:29
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

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


Daj jeszcze na początek:
  1. <?php
  2. $_GET['page'] = basename($_GET['page']);
  3. ?>

i powinno być ok
Go to the top of the page
+Quote Post
morphi99
post 22.06.2008, 09:06:02
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 2
Dołączył: 16.02.2008

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


A czym różnił by się ten zapis:
Kod
$_GET['page']

od takiego zapisu:
Kod
$_GET[page]
Go to the top of the page
+Quote Post
admin22
post 22.06.2008, 09:31:49
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 18.12.2006

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


Ja na niektórych serwisach mam takie zabezpieczenie.

  1. <?php
  2. $adres="/home/user/public_html/"."przedrostek_"."$dzial"."/"."$str".".php";
  3.  
  4. if ($dzial=="" && $str=="" || $dzial=="serwis" && $str=="glowna")
  5. {
  6. echo '<h1>HOME</h1>';
  7. }
  8.  
  9. else {
  10.  
  11.  if (file_exists($adres)) {
  12. include "$adres";
  13. } 
  14.  else {
  15. echo "<h1>Błąd 404</h1>";
  16. }
  17.  }
  18. ?>


Ten post edytował batman 22.06.2008, 13:27:05
Powód edycji: dodałem bbcode
Go to the top of the page
+Quote Post
matx132
post 22.06.2008, 09:43:16
Post #5





Grupa: Zarejestrowani
Postów: 243
Pomógł: 19
Dołączył: 12.09.2005

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


Cytat(admin22 @ 22.06.2008, 08:31:49 ) *
Ja na niektórych serwisach mam takie zabezpieczenie.
  1. <?php
  2. $adres="/home/user/public_html/"."przedrostek_"."$dzial"."/"."$str".".php";
  3.  
  4. if ($dzial=="" && $str=="" || $dzial=="serwis" && $str=="glowna")
  5. {
  6. echo '<h1>HOME</h1>';
  7. }
  8.  
  9. else {
  10.  
  11.  if (file_exists($adres)) {
  12. include "$adres";
  13. } 
  14.  else {
  15. echo "<h1>Błąd 404</h1>";
  16. }
  17.  }
  18. ?>



jak juz dajesz jakis kod php daj go w znaczniki

Ten post edytował batman 22.06.2008, 13:27:51
Powód edycji: a Ty używaj przycisku raportuj, a nie baw się w moderatora
Go to the top of the page
+Quote Post
Xniver
post 22.06.2008, 11:17:41
Post #6





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

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


admin22 - na bezpieczny to on nie wygląda, korzystasz z register_globals i brak zabezpieczenia przed directory transversal. Polecam zapoznać się z tablicami superglobalnymi($_GET, $_POST etc.) oraz z funkcją basename.

morphi99 - ten drugi zapis to raczej jest przestarzały i nie używany
Go to the top of the page
+Quote Post
bełdzio
post 22.06.2008, 12:15:32
Post #7





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


to jak każdy daje coś od siebie to ja też dam ;-)

http://www.beldzio.com/bezpieczenstwo-dost...do-plikow.freez


--------------------
Go to the top of the page
+Quote Post
scanner
post 22.06.2008, 21:20:53
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat(morphi99 @ 22.06.2008, 10:06:02 ) *
A czym różnił by się ten zapis:
Kod
$_GET['page']

od takiego zapisu:
Kod
$_GET[page]

Pierwsza linia oznacza odwołanie do indeksu page w tablicy $_GET
Druga linia oznacza odwołanie do indeksu w tablicy $_GET, którego wartość znajduje się w stałej page.

Drugi zapis spowoduje wygenerowanie E_WARNING (bądź E_NOTICE, nie pamiętam w tej chwili) zawsze, gdy stała page jest niezdefiniowana. Niestety PHP nie traktuje tego jako błędu krytycznego i uznaje wartość niezdefiniowanej zmiennej jako równa jej nazwie (czyli po wygenerowaniu powyższego błędu symuluje takie działanie:
  1. <?php
  2. define("page", "page");
  3. ?>
i kontynuuje działanie. Jeśłi masz obniżony poziom raportowania błędów, nawet tego nie zauważysz - ale jest to jeden z podstawowych błędów początkujących programistów.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
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: 24.04.2024 - 10:59