Во-первых, позвольте мне сказать вам, что около 85% методов защиты выполняются с 2 функциями.
Во-первых, если кто-то отправляет данные на ваш сайт, например $_POST['name']
, и вы хотите использовать это значение обратно на html-стороне, например <p>The following string: {$_POST['name']} is invalid</p>
, тогда вы ВСЕГДА должны убедиться, что это значение имеетчерез htmlspecialchars , это защитит большинство попыток XSS
Далее идет внедрение, если значение $_POST['name']
входит в вашу базу данных, просто убедитесь, что выиспользуйте mysql_real_escape_string для этого значения.
, что обеспечит вам 100% защиту от SQL-инъекций, но все это означает, что ваша БД не может выполнять команды от пользователя, что не означает, что текстчто это должно быть.
Функции, которые вы всегда должны использовать перед вставкой данных в базу данных:
Это называется Проверка и необходима только для того, чтобы вы могли убедиться, что данные, отправляемые пользователем, соответствуют вашим запросам, например filter_var будет использоваться для проверки того, что введенная ими электронная почта является электронной почтой, а не просто бла-бла
Что я обычно делаю в палатке, так это запускаю чистую функцию, чтобы убедиться, что все вмененные данныечист с htmlspecialchars
пример:
function clean($array)
{
foreach($array as $key => $val)
{
if(is_array($val))
{
$array[$key] = clean($val); //Recursive
}else
{
$array[$key] = htmlspecialchars($val, ENT_QUOTES);
}
}
return $array;
}
Затем сделайте следующее, чтобы убедиться, что ваш сейф от XSS:
$_GET = clean($_GET);
$_POST = clean($_POST);
Так что если кто-то попытался отправить <a href='test'>Test</a>
, тогда значение будет преобразовано в <a href='test'>Test</a>