[PHP]Bezpieczeństwo strony

0

Witam wszystkich.
Mam pytanie. Napisałem sobie funkcję, która ma zabezpieczać mi zmienne. Teraz pytanie brzmi czy ta funkcja jest wystarczająca, co do niej ewentualnie dodać, usunąć lub zmienić i czy mogę filtrować nią każdą zmienną?

Funkcja:

<?php
function filtr($val)
{
$val = trim($val);
$val = mysql_real_escape_string($val);
$val = addslashes($val);
$val = htmlspecialchars($val);
return $val;
}
?>
0

Możesz jeszcze użyć salta zabezpieczonego jakimś hashem...

...nevermind, przynajmniej próbowałem pomóc :P

0
Perykles napisał(a)

Możesz jeszcze użyć salta zabezpieczonego jakimś hashem.

[rotfl]

0

Jest jeszcze jedna taka funkcja, a mianowicie strip_tags. Poczytaj o niej i możesz dorzucić.

0

stript_tags jak najbardziej tak
może niekoniecznie do tej funkcji, ale jeśli ktoś ma wprowadzić wartość liczbową warto sprawdzić np. is_int().

Możesz także poczytać o preparowanych zapytaniach ( takich funkcjach jak : sql->prepare, bind_param, execute, store_result, bind_result i fetch)

0

Może lepiej skorzystać z jakiegoś ORM niż tworzyć na nowo koło ?:)

0
leadersmind napisał(a)

Może lepiej skorzystać z jakiegoś ORM niż tworzyć na nowo koło ?:)

Akurat orm w przypadku autoryzacji to średnio trafiony pomysł, poza tym co ma piernik do wiatraka?

@nansss addslashes możesz sobie odpuścić, jeśli masz włączone magic_quotes, powinieneś mieć.

Dokładniej tu http://pl2.php.net/Addslashes

0

Autoryzacja sprowadza się do zapytania do bazy, tak? Więc sam sobie odpowiedz na pytanie co ma do tego ORM :)

Można tutaj roztrząsać kwestię autoryzacji i uwierzytelniania, no ale nie wiem czy rzeczywiście miałeś na myśli to co napisałeś.

0

Akurat na to pytanie już dawno sobie odpowiedziałem, to proste zapytania, wykonywane często, a więc nie ma potrzeby do tej prostoty zaprzęgać ORM, choćby ze wzgl. na wydajność...

Poza tym po co mieszać tutaj z ORM, które z bezpieczeństwem ma nie wiele wspólnego, zwłaszcza w przypadku autoryzacji, chłopaki są jeszcze początkujący a Ty wyjeżdżasz z ORM, po co?

Gdyby ORM było zawsze takie cacy, nie wychodziły by biblioteki do autoryzacji, usuwające z nich zależność z ORM.

Każdy ma prawo do swojej opinii podpartej godnymi rozpatrzenia argumentami, ale najlepiej się zlansować się kozackim zdaniem i zajebać uśmieszek na koniec...eh.

0
GhostDog napisał(a)

Akurat na to pytanie już dawno sobie odpowiedziałem, to proste zapytania, wykonywane często, a więc nie ma potrzeby do tej prostoty zaprzęgać ORM, choćby ze wzgl. na wydajność...

Nie mydlmy sobie oczu wydajnością :) Gdyby to od niej wszystko zależało, nikt nie używałby framework-ów

GhostDog napisał(a)

Poza tym po co mieszać tutaj z ORM, które z bezpieczeństwem ma nie wiele wspólnego,

Ma jednak coś wspólnego z bezpieczeństwem po najczęściej odwala brudna robotę ze sprawdzaniem "brzydkich danych".

GhostDog napisał(a)

zwłaszcza w przypadku autoryzacji, chłopaki są jeszcze początkujący a Ty wyjeżdżasz z ORM, po co?

Gdyby ORM było zawsze takie cacy, nie wychodziły by biblioteki do autoryzacji, usuwające z nich zależność z ORM.

To można używać takich bibliotek ucząc się dobrych wzorców.

0

Nie mydlmy sobie oczu wydajnością :) Gdyby to od niej wszystko zależało, nikt nie używałby framework-ów

Wow frameworki, no to już na mnie atomówkę zrzuciłeś:D
To co napisałem wyżej jest jednym ze sposobów odchudzania frameworków.

Ma jednak coś wspólnego z bezpieczeństwem po najczęściej odwala brudna robotę ze sprawdzaniem "brzydkich danych".

I jeszcze nie potrzebuje modelu, które zinterpretuje wynik takich sprawdzeń? Chcę takie ORM.
ORM to tylko kolejny sposób dostępu do danych (w tym przypadku bazodanowych) na wysokim poziomie abstrakcji, na tym jego zadania się kończą, zresztą oboje o tym wiemy.
Inna sprawa, że bardzo przyjazny.

To można używać takich bibliotek ucząc się dobrych wzorców.

Racja. Rzeczywistość nie jest już taka fajna. Generalnie jak ktoś dostanie coś takiego to zwykle jego edukacja skończy się na poznaniu API, a zaglądać do środka się już nie będzie chciało. (znam wiele takich przypadków)

A w założeniu to miałby być chyba wątek o rzeczach 'niskiego poziomu', a nie taki typu, muszę zrobić coś na wczoraj i nie mam czasu na klepanie sql-a. Ja tu już bastuje bo to gruby offtop imho.

Pozdrawiam

0

Wy tu o wydajności, a jak autor tematu przepuści wszystkie dane od użytkownika przez tą swoją funkcję, to będzie miał tyle wydajności, że hej ;)

0
Cromwell napisał(a)

Wy tu o wydajności, a jak autor tematu przepuści wszystkie dane od użytkownika przez tą swoją funkcję, to będzie miał tyle wydajności, że hej ;)

Dlatego autorowi tematu polecam to:

http://www.php.net/manual/en/book.filter.php

Na tej podstawie można sobie stworzyć własny system walidacji.

Kolejna kwestią jest użycie funkcji mysql_real_escape_string(), imho powinna być wywoływana w klasie dostępu do bazy, tuż przed zapisem, po tym jak wcześniejsza walidacja przejdzie pomyślnie, za wcześnie nie ma co jej wywoływać.

Tak samo htmlspecialchars - tej funkcji używa się tuż przed wyświetleniem danych. Nie przed zapisem jej do bazy danych, bo co gdy dane z bazy będziemy wyświetlać w czymś innym niż html?

1 użytkowników online, w tym zalogowanych: 0, gości: 1