Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy rozwijane wybrane pola są podatne na wszelkiego rodzaju wstrzyknięcia?

Każdy element na stronie internetowej może zostać zmieniony przez złośliwego użytkownika (ukryte pola, elementy div, style, wywołania ajax, jak to nazwać...).

To powiedziawszy, jeśli już używasz przygotowanych instrukcji, nie powinieneś się zbytnio martwić o wstrzyknięcie SQL, ponieważ mysql już wie, jakie instrukcje zostaną wykonane.

Zamiast tego powinieneś oczyścić wszystkie dane wyjściowe renderowane na stronie internetowej.

Załóżmy, że w swoim formularzu pytasz, w jakim kraju mieszkam w ten sposób:

 <select name="country">
     <option value="Mexico">Mexico</option>
     <option value="USA">USA</option>
     <option value="Canada">Canada</option>
 </select>

ale jestem złośliwym użytkownikiem i używam inspektora kodu Chrome do zmiany kodu HTML i wybieram Meksyk, ale zmieniam jego wartość na

a jeśli wypiszesz tę wartość na innej stronie w ten sposób:

 Your country is: <?=$country?>

Potem napiszesz:

 Your country is:
 <script type="text/javascript">alert("Hello World")</script>

i pojawi się okno alertu z tekstem „Hello World”

Jaką szkodę mogę przez to wyrządzić, możesz się zastanawiać...

cóż, mogę z tym zrobić, co zechcę, mogę ukraść ciasteczka lub jeśli ta wartość jest publiczna (powiedzmy, że wyświetlasz tę wartość na swojej stronie głównej), to mogę przekierować użytkowników na inną stronę, zmienić zawartość Twojej witryny.. .cokolwiek zechcę.

Aby oczyścić wyniki swoich użytkowników, możesz użyć

htmlentities

To przekonwertuje na przykład < > symbole do odpowiedniego kodu:< i >



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie kluczy obcych do zastępowania ograniczenia sprawdzania

  2. Znajdź parametry połączenia do połączenia z MySQL Server 5.1.50 za pomocą OleDbConnection

  3. Jak połączyć się z mysql z C# przez SSH

  4. Szczegółowe spojrzenie na indeksowanie baz danych

  5. połącz java z mysql za pomocą jdbc na osx