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

Предотвратяване на скриптове от страна на сървъра, XSS

Никога не извеждайте какъвто и да е бит от данни в HTML потока, който не е преминал през htmlspecialchars() и сте готови. Просто правило, лесно за следване, напълно премахва всеки риск от XSS.

Като програмист е ваша работа да го направя обаче.

Можете да дефинирате

function h(s) { return htmlspecialchars(s); }

ако htmlspecialchars() е твърде дълъг за писане 100 пъти на PHP файл. От друга страна, с помощта на htmlentities() изобщо не е необходимо.

Ключовият момент е:има код и има данни. Ако смесите двете, се получават лоши неща.

В случая с HTML кодът е елементи, имена на атрибути, обекти, коментари. Данните са всичко останало. Данните трябва да бъде избяган, за да не бъде сбъркан с код.

В случай на URL адреси кодът е схемата, името на хоста, пътят, механизмът на низа на заявката (? , & , = , # ). Данните са всичко в низа на заявката:имена на параметри и стойности. Те трябва да бъде избяган, за да не бъде сбъркан с код.

URL адресите, вградени в HTML задължително да се екранира двойно (чрез екраниране на URL и HTML-escaping), за да се осигури правилно разделяне на код и данни.

Съвременните браузъри са способни да анализират удивително счупените и неправилни маркировки в нещо полезно. Тази способност обаче не трябва да се подчертава. Фактът, че нещо се случва да работи (като URL адреси в <a href> без подходящо HTML екраниране) не означава, че е добре или правилно да го направите. XSS е проблем, който се корени в а) хора, които не знаят за разделянето на данни/код (т.е. „излизане“) или такива, които са небрежни и б) хора, които се опитват да бъдат умни относно това коя част от данни не трябва да избягат.

XSS е достатъчно лесен за избягване, ако се уверите, че не попадате в категории a) и b).



  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 в C#

  2. Мигриране на MySQL към PostgreSQL на AWS RDS, част 3

  3. Изявление за многократно вмъкване на PDO

  4. MYSQL скрипт за преобразуване на имената на колоните в малки букви

  5. PHP/MYSQL AJAX чат