![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Cześć mam pytanie. Na ile skuteczne jest stosowanie mysqli_real_escape_string przed zapisem do bazy wartości tekstowej do pola TEXT lub VARCHAR?
Wszelkie maile lub jakiekolwiek wartości liczbowe czy schematyczne sprawdzam wyrażeniami regularnymi lub jeśli jest możliwość i nie trzeba korzystać z regularnych to na inne sposoby ale są to sposoby dość pewne. Np ma być liczba to sprawdzam czy jest to po prostu liczba. Mam jednak wątpliwości co do bezpieczeństwa zapisywania tekstu. Np komentarze, artykuły, księga wpisów itp gdzie użytkownik nie może mieć zbyt wielu ograniczeń. Używam wtedy najczęściej: I tutaj pytanie czy to wystarczy? Jeśli nie wystarczy to co można tutaj jeszcze zastosować? Pozdr. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A wystarczyło zapytać wujka Google. http://stackoverflow.com/a/12118602/1903850
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Zagmatwane to zwłaszcza po przetłumaczeniu na język polski przez googla.. Popraw mnie jeśli źle zrozumiałem w skrócie, jeżeli zdefiniuję, że ma być utf-8 to jestem bezpieczny?
Po otwarciu połączenia z bazą i tak zawsze ustawiam utf-8
nie wiem czy dobrze to zrozumiałem |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Najważniejsze jest chyba podsumowanie:
Cytat If you: - Use Modern Versions of MySQL (late 5.1, all 5.5, 5.6, etc) OR - Use mysql_set_charset() / $mysqli->set_charset() OR - Use the DSN charset parameter to PDO OR - Don't use GBK or BIG-5 (you only use UTF-8 / UCS-2 / Latin-1 / ASCII) You're 100% safe. If all of those are false, you're vulnerable even though you're using mysql_real_escape_string()... W wolnym tłumaczeniu: Cytat Jeśli:
- używasz nowych wersji MySQL (późna 5.1, wszystkie 5.5, 5.6 itd) LUB - używasz mysql_set_charset() / $mysqli->set_charset() LUB - przy użyciu PDO używasz parametru "charset" w DSN LUB - nie używasz GBK / BIG-5 (używasz tylko UTF-8 / UCS-2 / Latin-1 / ASCII) Jesteś w 100% bezpieczny. Jeśli żaden z powyższych warunków nie jest prawdziwy, jesteś narażony na SQL Injection. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
właśnie o to mi chodzi -o pkt 2
Cytat LUB - używasz mysql_set_charset() / $mysqli->set_charset() ja ustawiam to za pomocą
teraz pytanie czy jest to to samo co ustawienie kodowania za pomocą metody
bo generalnie przecież i jedno i drugie ma chyba takie samo działanie? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
IMO nie ma to większego znaczenia, bo i tak łapiesz się do ostatniego punktu mówiącego o używaniu UTF-8.
[edit] Według autora wpisu ma to znaczenie. Cytat So, I had said at the very beginning that we could have prevented all of this if we used mysql_set_charset('GBK') from the beginning. And that's true.
Ten post edytował sowiq 20.08.2013, 12:16:09 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
w ramach testu zamiast swojego ustawienia utf-8 zastosowałem
wywaliło mi na stronie krzaki (IMG:style_emoticons/default/smile.gif) w dotychczasowych postach pobranych z bazy danych po dodaniu nowego wpisu z tym ustawieniem, do bazy zapisuje się z krzakami ale na stronie wyświetla się prawidłowo -chyba będę musiał pozostać przy swoich ustawieniach Ten post edytował adamantd 20.08.2013, 12:34:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 04:54 |