Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zabezpieczenie skryptu przed atakami
Forum PHP.pl > Forum > Przedszkole
km1606
Witam

Czy do tak zabezpieczonego skryptu idzie się włamac na moją stronkę,
jeżeli tak to podpowiedzcie jak ten skrypt zabezpieczyc przed atakami.
  1. <HTML>
  2. <HEAD>
  3. </head>
  4. <body text="blue" bgcolor="beige" >
  5.  
  6.  
  7. <?php
  8. $aa = strip_tags($_POST['pole1']);
  9. ?>
  10.  
  11.  
  12.  
  13. <center>
  14. <form action="" method="POST">
  15.  
  16.  
  17. <br>
  18. <button type="submit" >Wyślij</button>
  19. <br>
  20. <textarea name="pole1" style = "font-size:15px;" cols="100" rows="10"><? echo strip_tags($_POST['pole1']); ?></textarea><br>
  21. <br>
  22. <br>
  23. <textarea readOnly style = "font-size:15px;" cols="100" rows="10"><?php echo strip_tags($aa); ?> </textarea><br>
  24.  
  25.  
  26. </form>
  27. </center>
  28. </body>
  29. </html>
Damonsson
Z PHP 5.3+ i najnowszymi przeglądarkami powinno być bezpieczne w takim przypadku użycia.
Star
Ja osobiście nie wiem po co się ktoś miałby wlamywac do formularza, jeśli ktoś by go chciał wysłać z "zewnątrz" to zrobi to bez problemu. Oczywiście jeśli się mylę to proszę mnie poprawić :-)
Nie rozumiem też czemu tworzysz zmienna aa która potem ladujesz do strip_tags, robisz to drugi raz, ponieważ w tej zmiennej juz wrzuciłes dane z POST do tej funkcji :-)
km1606
Użyłem tyle razy strip_tags dla wiekszego bezpieczeństwa.

Mam jeszcze drugie pytanie, czy zmieniając w skrypcie

<textarea readOnly style = "font-size:15px;" cols="100" rows="10"><?php echo strip_tags($aa); ?> </textarea>

na

<?php

echo $aa;

?>

idzie się do niego włamac?






<HTML>
<HEAD>

</head>
<body text="blue" bgcolor="beige" >



<?php
$aa = strip_tags($_POST['pole1']);
?>



<center>

<form action="" method="POST">

<br>
<button type="submit" >Wy¶lij</button>
<br>
<textarea name="pole1" style = "font-size:15px;" cols="100" rows="10"><? echo strip_tags($_POST['pole1']); ?></textarea><br>
<br>
<br>


<?php

echo $aa;

?>



</form>
</center>
</body>
</html>
Damonsson
Raz wystarczy. Też jest ok.
KsaR
Hm.
Jesli cos wyswietlasz nie rob strip_tags
Tylko htmlspecialchars($aa,ENT_QUOTES,'UTF-8');
wtedy obronisz się przed atakami typu XSS ( cross-site-scripting ).

+ jak przedmowca pisal, staraj sie trzymac zasady DRY (Don't repeat yoursel = nie powtarzaj się).
Wystarczy ze zrobisz raz
$aa=htmlspecialchars($aa,ENT_QUOTES,'UTF-8');
potem nizej wystarczy $aa zamiast znow tego samego. Oszczedzasz na wielkosci skryptu i czasie wykonania.

Jesli cos zapisujesz do bazy to lepiej dac surowa zmienna $aa bez zadnych zabezpieczen o ile uzywasz np. Instrukcji/funkcji preparowanych.
Lub zabezpieczen przed SQL-Injection.
Co da wieksze pole do twojej dyspozycji gdybys cos zmienial.
Tzn nie zapisuj gotowego wyniku tylko tak jak user podal najlepiej.

A cztery, sprawdzaj czy zmienna lub indeks istnieje.
Zaoszczedzisz bledow w logu jesli prowadzisz taki.
Lub ewentualnych bledow na produkcji o ile masz tak skonfigurowane wyswietlanie i bez zadnych funkcji ktore integruja w bledy.

  1. #Np.
  2.  
  3. #Zamiast
  4. $aa = strip_tags($_POST['pole1']);
  5. #Zrob:
  6. $aa = isset($_POST['pole1']) ? htmlspecialchars($_POST['pole1'],ENT_QUOTES,'UTF-8') : ''; // uzyte tu zostaly tenary operator/shorter if (skrócony if).
Comandeer
Może się przyda: https://phpbestpractices.org/#sanitizing-html
km1606
Dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.