Jak zabezpieczyć skrypty php?


(Konradnie1) #1

Witam.

Jak dobrze zabezpieczyć php??

Dane z formularzy filtruje funkcjami:

mysql_real_escape_string()

htmlspecialchars()

strip_tags()

addslashes()

stripslashes()

a jak zabezpieczyć sesje??

I co jeszcze trzeba zabezpieczyć??


(ra-v) #2

Coś do wykrywania i usuwanie XSS

http://pl.wikipedia.org/wiki/Cross-site_scripting

Dodatkowo coś w JS aby boty nie zabawiły się w spamowanie.


(Konradnie1) #3
Dodatkowo coś w JS aby boty nie zabawiły się w spamowanie.

A coś dokładniej??

JS nie znam wogule tak więc jak by ktoś mógł pomóc


(ziggurad) #4

Chodzi np o:

http://www.google.com/recaptcha

Czyli aby wysłać formularz użytkownik musi np przepisać kod z obrazka.


(Konradnie1) #5

Ale to wystarczy dać do przy logowaniu??

Do innych formularzy jest dostęp dopiero po zalogowaniu

Dzięki za pomoc


(Drobok) #6

JS to dodatek, na boty nie obsługujące js nie zadziała. Przy rejestracji a nie przy logowaniu. Logowanie powinno być na x prób z danego ip / loginu.


(ra-v) #7

To jest najbardziej wkurzające.

W JS wystarczy wstawić jakieś pole przed wysłaniem lub np. 1s po wczytaniu, które będzie walidowane w PHP. Banalne, proste i niewkurzające.

Właśnie na boty nie obsługujące JS to działa wyśmienicie, zwykle głupie boty nie obsługują JS a takie się spotyka najczęsciej.


(Konradnie1) #8
W JS wystarczy wstawić jakieś pole przed wysłaniem lub np. 1s po wczytaniu, które będzie walidowane w PHP.

Co masz na myśli?? Nie znam JS więc jak mozesz to podaj jakiś przykład o co Ci chodzi.


(ra-v) #9

W czystym JS

    <script type="text/javascript">

(Konradnie1) #10

Dobra dzięki za kod.

Czyki mam go dodać do rejestracji?? czy do każdego formularza na kazdej stronie??

Wyżej napisa.łem funkcje z których kożystam a tak sobie myśle po co dodawać sleshe skoro mysql_real_escape_string() je dodaje??

Nie wystarczy coś takiego:

<?php

function spr($dane)

{

$dane=mysql_real_escape_string($dane);

$dane=strip_tags($dane);

return $dane;

}

?>

Po co użwyać htmlspecialchars() i strip_tags()

skoro strip_tags() usuwa znaczniki a htmlspecialchars() wyświetla je jako tekst??

Nie rozumiem czegoś czy jest to 2 razy to samo tylko efekt wyswietlania się zmienia??


(ra-v) #11

Rejestracja, logowanie, formularze z których wysyłane są maile.

Wystarczy wstawić raz w

, czy nawet sam JS załączyć w osobnym pliku i się nie martwić. Tam gdzie potrzebujesz dodasz walidację w PHP.

mysql_real_escape_string() służy do zabezpieczenia przed SQL Injection, a strip_tags() wywala kod HTML, aby nikt nie wstawiał czasem głupot w HTMLu.


(Konradnie1) #12

Maile wysyłam przy rejestracji. Ten twój kod zabezpiecza przed spamem? To tylko przy rejestracji musze dać.

mysql_real_escape_string() służy do zabezpieczenia przed SQL Injection, a strip_tags() wywala kod HTML, aby nikt nie wstawiał czasem głupot w HTMLu.

No to dobrze rozumiem. Wystarczy ta funkcja co wyżej podałem(2 funkcje)?? Zabezpieczenie przed SQL Injection jest w html też nikt nic nie zrobi. Coś jeszcze trzeba dać żeby było dobrze wszystko zabezpieczone??

Js nie znam, formularz musze jakoś nazwać zeby działało to co wyżej podałeś??


(ra-v) #13

Tak jakby.

Zabezpiecza przed automatycznym wysyłaniem formularzy przez boty.

Nie musisz. TO doda 1 pole do kazdego formularza

Wstaw ten JS co podesłalem do dowolnego pliku HTML gdzie masz kilka formularzy, potem zdebuguj

Goły HTML wyglada tak

A po dokładniejszym sprawdzeniu w narzędziach deweloperskich


(Konradnie1) #14

Dobra dzięki za pomoc.

a co z funkcjami php??

mysql_real_escape_string()

strip_tags()

wystarczą te dwie?? Czy musi być coś jeszcze żeby było dobrze zabezpieczone??


(ra-v) #15

Pisałem już o XSSie

https://www.google.pl/search?q=php+remove+xss&oq=php+remove+xss&aqs=chrome.0.57j60l3j59l2.2772&sugexp=chrome,mod=9&sourceid=chrome&ie=UTF-8


(Konradnie1) #16

A więc mam funkcje:

function spr($dane)

{

  $dane=mysql_real_escape_string($dane);

  $dane=htmlspecialchars($dane);

  $dane=strip_tags($dane);


}

czytałem na jednym forum że strip_tags() zabezpiecza przed xss a na innym że nie do końca tak wiec co jeszcze mam dodać??

Niech ktoś pomoze bo chce zeby było dobrze zabezpieczone a nigdy nie miałem z tym styczności.


(ra-v) #17

W sumie strip_tags() może zabezpieczać.

Pamiętaj też, że jeśli zmienna $dane ma wartość “Odp. : masz rację” to w bazie prawdopodobnie nie będzie :wink:


(Konradnie1) #18

A w nawiasach kwadratowych będzie?? []

A serwer może sam się zabezpieczać?? bo jak wpisałem w formularz tagi html bez zabezpieczen to i tak ich nie było


(ra-v) #19

strip_tags() wywala tylko to co między <>. Może być przypadek że ktoś wpisze tekst “jeśli x<1 oraz x>-1” to w wyniku tego otrzymasz “jeśli x-1”

Bo tagów HTML nie widać w przeglądarce, co jest chyba normalne;-)

( htmlspecialchars($_POST['pole']) );[/code]

(Misiek) #20

generalnie należy skupić się na

1.filtrowaniu danych odbieranych przez formualarz

  1. dbaniu o własny hosting dedykowany, odpowiednie prawa plików katalogów, gdyż np na popularne hostingi nazwa.pl jest coraz więcej ataków zatem co byś nie robił ze skryptem jak masz hosting kulawy to skrypt padnie