• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Bezpieczeństwo & pobieranie rekordów z bazy danych = dziwne znaczki

VPS Starter Arubacloud
0 głosów
231 wizyt
pytanie zadane 5 grudnia 2017 w PHP przez OdsetekGlupoty Pasjonat (15,360 p.)

Witam,

Tworzę swego rodzaju czat i teraz zajmuję się adminpanelem. Po stworzeniu i przetestowaniu tej podstrony nadszedł czas bezpieczeństwa... Więc tworzę zabezpieczenia dla każdego inputa: htmlentities + mysql_real_escape_string + jeśli się da to ctype_alnum i strlen. Myślę, że takie zabezpieczenia są dobre, ale przejdźmy do sedna sprawy:

W adminpanelu można zbanować użytkownika i to jak najbardziej działa. Można także podać powód zawieszenia konta. I tu pojawia się problem. Gdy w tym inpucie używam zabezpieczeń i wstawiam tam polskie znaki (lubię żółć), to w powodzie pokazują się znaczki typu Webdings.

Nie jest to dla mnie zdziwieniem i spodziewałem się, że tak będzie po przefiltrowaniu inputa "powod", tylko że nie wiem jak sobie z tym poradzić. Co mogę z tym zrobić? Bardzo proszę o pomoc i z góry dziękuję :)

fragment: ADMINPANEL.PHP

if ((!empty($_POST['powodbana']) && ($_POST['zawieszenie'])))
	{
		$powodbana = $_POST['powodbana'];
		
		$powodbana = htmlentities($powodbana, ENT_QUOTES, "UTF-8");
				
		if ($rezultat = @$polaczenie->query(
		sprintf("INSERT INTO `historia` (`id`, `nazwa`, `powod`) VALUES (NULL, '%s', '%s'",
		mysqli_real_escape_string($polaczenie,$nick),
		mysqli_real_escape_string($polaczenie,$powod))))
		{
			$_SESSION['powodbana'] = "$powodbana";
		}
	}	

fragment: INDEX.PHP (jeśli jest potrzebny)

if (isset($_SESSION['zbanowany']))
{			
	if ($rezultat = $polaczenie->query("SELECT powod FROM historia WHERE nazwa = '$nick'"))
		{	
			$wiersz = $rezultat->fetch_assoc();
			{
				$powodbana = $wiersz['powod'];			
			}
		}
	
	echo '<div class="error2"><br />ZOSTAŁEŚ ZBANOWANY PRZEZ ADMINISTRACJĘ DO ODWOŁANIA<br />';
	echo "<b>Powód: $powodbana </b><br />";
	echo 'W razie problemów proszę skontaktować się z administracją poprzez e-maila kontaktowego</div>';
	unset ($_SESSION['zbanowany']);	
}

 

komentarz 5 grudnia 2017 przez Tomek Sochacki Ekspert (227,490 p.)
A masz poustawiane dobre kodowanie w HTML oraz w bazie?

1 odpowiedź

0 głosów
odpowiedź 5 grudnia 2017 przez Bosswell Nałogowiec (36,470 p.)
wybrane 6 grudnia 2017 przez OdsetekGlupoty
 
Najlepsza
http://php.net/manual/fr/function.html-entity-decode.php

No chyba że nie ustawiłeś kodowania połączenia i kodowania w bazie

http://php.net/manual/es/mysqli.set-charset.php

Podobne pytania

0 głosów
2 odpowiedzi 888 wizyt
pytanie zadane 18 lutego 2020 w PHP przez adikpl Użytkownik (660 p.)
0 głosów
4 odpowiedzi 3,138 wizyt
pytanie zadane 8 grudnia 2017 w PHP przez kamilocl Nowicjusz (220 p.)
0 głosów
1 odpowiedź 770 wizyt
pytanie zadane 23 maja 2017 w PHP przez Michał Samolewski Bywalec (2,240 p.)

93,015 zapytań

141,978 odpowiedzi

321,271 komentarzy

62,358 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...