![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Musze do bazy danych zapisac teksty uzytkownikow z tinymce editora. Musze to jednak zrobic w czystej postaci: nie moge przepuscic tekstu przez htmlspecialchars)= i zapisac do bazy, a nastepnie przy wyswietlaniu uzyc htmlspecialchars_decode(). Musze zapisac je ze znakami specjalnymi. W tym wlasnie problem. W takim przypadku edytor tekstowy staje sie okienkiem do wpisywania polecen dla hakerow. Macie moze pomysl, jak rozwiazac ten problem? Z gory dziekuje za pomoc:)
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 30 Dołączył: 11.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
dlaczego nie możesz przepuścić przez te funkcje i przy wyświetlaniu dekodować?
a addslashes i stripslashes (IMG:style_emoticons/default/questionmark.gif) i zmień tytuł tematu, bo to z tego co wiem nie jest validacja pola formularza (IMG:style_emoticons/default/biggrin.gif) tylko ochrona przed SQL injection Ten post edytował piotr94 22.07.2010, 09:16:07 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
jakbym mogl to bym nie pisal tematu (IMG:style_emoticons/default/tongue.gif) W bazie musza byc znaki specjalne, to nie jest wyswietlane u mnie. Takie sa wymagania i nic nie moge na to poradzic.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 30 Dołączył: 11.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
a filtrowanie słów "kluczowych" dla zapytań SQL typu OR, AND itp. i odpowiednia zamiana ich na kody &xxx; (IMG:style_emoticons/default/questionmark.gif)
powinno zatrzymać hakerów, bo do bazy nie pójdzie wtedy na pewno nic co by mogło zmienić zapytanie moim zdaniem i tak to ewidentny błąd osoby u której to się będzie wyświetlać, ale skoro masz takie obligacje to postaram się jakoś pomóc Ten post edytował piotr94 22.07.2010, 09:25:35 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Doklanie to co jest w bazie jest przetwarzane przez inny skrypt. Skrypt dziala lokalnie i dostep do niego maja tylko upowaznione osoby, wiec nie potrzebowali tak tego zabezpieczac. Nie ja projektowalem tamta aplikacje (IMG:style_emoticons/default/biggrin.gif) jest jakas funkcja filtrujaca frazy sql i php ?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 30 Dołączył: 11.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
fraz php nie musisz filtorwać, chyba, że gdzieś jest eval(); (IMG:style_emoticons/default/biggrin.gif)
co do fraz SQL to bym to załatwił tak: i podobnie AND,... nie musisz filtrować wszystkich słów kluczowych SQL - przeanalizuj które w Twoim zapytaniu moga stwarzać niebezpieczeństwo i filtruj tylko je //EDIT w drugim array(); powinny być znaczniki &# xxx ;, ale nie wiem czemu forum zamienia te znaczki na litery Ten post edytował piotr94 22.07.2010, 09:40:41 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
dzieki:) sprobuje
Tak sie zastanawiam, czy nie ma innej mozliwosci. Ta jest dosc problematyczna i malo wydajna. Moze ktos zna inny sposob? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
fraz php nie musisz filtorwać, chyba, że gdzieś jest eval(); (IMG:style_emoticons/default/biggrin.gif) co do fraz SQL to bym to załatwił tak: i podobnie AND,... nie musisz filtrować wszystkich słów kluczowych SQL - przeanalizuj które w Twoim zapytaniu moga stwarzać niebezpieczeństwo i filtruj tylko je //EDIT w drugim array(); powinny być znaczniki &# xxx ;, ale nie wiem czemu forum zamienia te znaczki na litery Takie zabezpieczenie nie jest najlepsze, o ile pamiętam wystarczy zabawa z komentarzami. Co do zabezpieczeń polecam videoarty Unknow'a. Ten post edytował fifi209 27.07.2010, 10:06:46 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Nie chcę być złośliwy, ale wystarczy zastąpić or || a and &&. A prawdziwe pole do popisu daje tu JS, ja bym sobie darował zabezpieczanie tego bo ilość fraz, które mogą spowodować szkodę jest nieograniczona a w dodatku zaraz ktoś się przyczepi, że wpisując np. "Comercial union" wycina mu union (IMG:style_emoticons/default/guitar.gif)
Robisz tak, jak klient chce, ostrzegasz go i się nie martwisz o nic, jak klient straci wystarczająca ilość czasu i kasy to w końcu zrozumie, że jego koncepcja była zła. Inaczej trudno co niektórych przekonać. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem dlaczego podchodzicie do tego w taki sposób że chłopak sam ma tworzyć zapytania, nie lepiej zaproponować koledze przejście na programowanie obiektowe, na początek klasy modeli w połączeniu z prostym PDO. PDO posiada lepsze "zabezpieczenia" przed sql injection niż ty sam jesteś w stanie wymyślić.
Rozwiąż to w ten sposób że tworzysz sobie klasę odpowiadającej tabelce w bazie z odopowiednimi metodami i atrybutami czyli:
Pisane z ręki mogą być błędy, ale zamysł jest prawidłowy. Jeśli wybierzesz moje rozwiązanie na pewno postaram się pomóc. Ten post edytował fander 28.07.2010, 09:08:07 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
addslashes ma błąd i jest sposób na to by go obejść, dlatego się go nie stosuje.
Nic się nie przejmuj jakie dane są ładowane przez tinymce, wyłącz w nim obsługę js i on się sam ogarnie że nie może być w nim kodu js. A dane ładuj do db poprzez mysql_escape_string i tyle Cie interesuje. Albo PDO jak kolega wyżej napisał. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 30 Dołączył: 11.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
bardzo ciekawe te poradniki Nieznanego (IMG:style_emoticons/default/biggrin.gif)
dzięki za linka |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 1 Dołączył: 24.06.2010 Skąd: Sopot Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj do bindValue() w PDO:
http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO#Podpinanie W ten sposób nie musisz się martwić, że ktoś Ci zrobi SQL-Injection, choć oczywiście inne ataki typu XSS są możliwe. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 22:56 |