[php] zapisywanie danych ze znakami specjalnymi

0

Witam, piszę sobie mały skrypt, który ma odbierać dane od użytkownika i zapisywać je w bazie, a potem prezentować te dane na stronie. Nic w tym trudnego, tylko że chodzi mi o zapisywanie np kodu PHP, czyli jest w nim dużo różnych znaków, m.in. ' " czy /. Jakich funkcji używać do filtrowania danych pobieranych z input'a, żeby pobrać ten kod w całości i w oryginalnej formie go później wyświetlić na stronie, jednocześnie zabezpieczając się przez SQL Injection? Będe wdzięczny za jakiekolwiek podpowiedzi.

0

Użyj jakiegoś PDO czy własnej biblioteki, tam możesz walnąć zapytanie typu:
INSERT INTO artykuly (user, tekst) VALUES (:user, :tekst)
I do tych zmiennych :user i :tekst zbindować jakąś zmienną z PHP, PDO zagwarantuje poprawne przesłanie danych do zapytania. W ostateczności można użyć prostackiego addslashes() i stripslashes().

0

ja uzywam pdo i tez ci polecam. Natomiast jak uzywasz zwyklych funkcji do komunikowania sie z baza, to uzyj
http://php.net/manual/en/function.mysql-real-escape-string.php

0

Sporo czytałem o PDO i na prawdę bardzo ciekawe i dobre rozwiązanie, tylko że po prostu jestem już mniej więcej w połowie tworzenia i bym musiał wszystko przerabiać co łączy się z bazą na PDO. Nie ukrywam że mi się to nie uśmiecha. Wiec interesuje mnie rozwiązanie tylko i wyłącznie z mysql_real_escape_string + ewentualnie pobieranie całego tekstu od usera i zamiana go na encje(tylko znaków specialnych - htmlspecialchars) i wtedy zapis do bazy. Czy takie coś było by bezpieczne?

0

Jeśli zmienisz na encje wszystkie znaki specjalne, to nie ma problemu. Chociaż przy normalnym połączeniu gdzie używasz zestawu:
`" ' ``
Wystarczy użyć addslashes() i stripslashes().

0

Dzięki serdeczne, poradziłem sobie z tym ;-)

0

W związku z tym że w swoim projekcie chcę zastosować kolorowanie składni z klasą GeSHI mam takie pytanie czy to jest bezpieczne? Zauważyłem że zmienna w której jest kod przepuszczana jest przez funkcję htmlspecialchars(). Ale nie czy po tym zabiegu muszę jeszcze obrabiać ją np addslashes() ?

Sorki za OFFTOP ale nie opłacało się zakładać nowego tematu. Pozdrawiam.

0

Ja nie pamiętam jak tam jest, podejrzyj kod. Jeśli zmienia cudzysłowy na " i apostrofy to jest bezpieczne.

0

Cudzysłowie zamienia, ale apostrofy wypisywane są normalnie.

0

No to jeśli wstawiasz do zapytania przez cudzysłowy jest bezpiecznie. Jeśli przez apostrofy - addslashes().

0

Ok, jeszcze raz dzięki. Pozdrawiam.

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