Mysql
 sql >> база данни >  >> RDS >> Mysql

Падащи полета за избор са уязвими за всякакъв вид инжектиране

Всеки един елемент в уебсайт може да бъде променен от злонамерен потребител (скрити полета, divs, стилове, ajax повиквания, вие го наречете...).

Въпреки това, ако вече използвате подготвени изявления, не бива да се притеснявате твърде много за SQL инжекцията, защото mysql вече знае какви оператори ще бъдат изпълнени.

Вместо това трябва да дезинфекцирате целия изход, който се изобразява в уебсайт.

Да кажем, че във вашата форма вие питате в коя държава живея по този начин:

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

но аз съм злонамерен потребител и използвам инспектора на кода на Chrome, за да променя вашия HTML, и избирам Мексико, но променям стойността му на

и ако изведете тази стойност на друга страница по следния начин:

 Your country is: <?=$country?>

След това ще пишете:

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

и ще се появи поле за предупреждение с текст „Hello World“

Каква вреда мога да направя с това, че може да се чудите...

добре, мога да правя всичко, което искам с това, мога да открадна бисквитки или ако тази стойност е публична (да речем, че показвате тази стойност на началната си страница), тогава бих могъл да пренасоча потребителите ви към друг уебсайт, да променя съдържанието на вашия уебсайт. . каквото искам.

За да дезинфекцирате изхода на вашите потребители, можете да използвате

htmlсъщности

Това ще преобразува, например, < > символи към съответния код:< и >



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:грешка във вашия SQL синтаксис ... близо до ключ ...?

  2. Не мога да удостоверя моето приложение Node js(v10.15.3), npm mysql (v2.17.1) с MySQL(8.0.15) (ER_ACCESS_DENIED_ERROR)

  3. Как да изберете всички записи, които са 10 минути в рамките на текущата времева марка в MySQL?

  4. Функция MySQL TRUNCATE() – съкращаване на число до определен брой десетични знаци

  5. съвпадение на цели думи, като същевременно игнорира афиксите на думи, използвайки регулярен израз