Всеки един елемент в уебсайт може да бъде променен от злонамерен потребител (скрити полета, 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същности
Това ще преобразува, например, <
>код> символи към съответния код:
<
и >