Если ваши данные поступают в базу данных, вы должны запретить пользователям отправлять данные, которые выйдут из вашего обычного запроса, чтобы нарушить или изменить этот запрос.Использование MySQLi с привязкой параметров - лучший способ защитить вашу базу данных.До тех пор, пока вы также используете строку или preg replace.Так что целочисленный идентификатор должен быть просто int.Вы хотите удалить из своих данных столько символов, сколько можете логически.
Если ваши данные будут помещены между тегами, то рекомендуется использовать strip_tags и htmlentities.Однако, если вы можете использовать белый список, сделайте.Если вы знаете, что вывод должен быть только int, убедитесь, что это так.echo htmlentities(strip_tags($value));
Если вы помещаете эти данные в тег <a href='<?php echo $value; ?>'>
, вышеприведенного недостаточно.Вы также должны заменить одинарные кавычки.Здесь еще более важно, чтобы вы не допустили попадания отравленных данных. Если бы $ value было что-то вроде ' onClick='alert("oops");'
, вы могли бы быть в серьезном затруднении.Здесь вы должны обязательно использовать белый список и разрешать отображение введенного пользователем контента, только если это абсолютно необходимо.
Если вы хотите вывести в JavaScript.Не.Вы не должны делать это, даже если вы работали с безопасностью в течение многих лет.Тем не мение.Единственное исключение может быть сделано для ОЧЕНЬ определенных значений.Целые.Строки, которые привязаны к A-Za-z0-9 и пробелу с прегом, заменяют.Тем не мение.Это ОЧЕНЬ опасно и может серьезно скомпрометировать вашу систему.
Если вы хотите поместить переменные в eval или exec.ПРОСТО НЕ.Вы не достаточно умны, чтобы предотвратить атаку.Я тоже. Никого нет.Это просто вопрос времени, когда кто-то найдет способ.А если код, как он был написан, был в порядке?Через некоторое время код изменится и больше не будет в порядке.Просто не делай этого.Период.Или однажды вы будете сидеть в тюрьме, задаваясь вопросом: «Но я не взломал Пентагон ...»