Это хорошая функция санации?

Просто хочу сказать за все мои предыдущие вопросы, спасибо за помощь в решении нескольких вопросов. Конечно, я нуб, но обучение — это ключ.

Я делаю функцию, которая очищает входные данные перед отправкой в ​​запрос, чтобы убедиться, что они безопасны. Это несколько вопросов из моей последней ветки, а также несколько новых вопросов. Этот вопрос адресован людям, которые действительно хороши в том, чтобы обеспечить безопасность и безопасность материалов.

Вот как я делаю все мои запросы.

$query = $dbh->prepare("SELECT * FROM table WHERE data = ?");
$query ->execute(array($data));

И в основном «вставка» запросов или любой другой тип запроса я делаю это так.

$query = $dbh->prepare("INSERT INTO table ( data ) VALUES ( :data )";
$query ->execute(array(':data'=>$data));

Я обычно использую этот метод для запросов, которые требуют ввода тонны данных. Мой вопрос, работает ли в любом случае? У меня нет ничего связанного, потому что у меня есть эта функция очистки, которую я сделал.

function sanitize($type, $input) {
if ($type == "email") { $input = filter_var($input, FILTER_SANITIZE_EMAIL); }
if ($type == "int") { $input = filter_var($input, FILTER_SANITIZE_NUMBER_INT); }
if ($type == "float") { $input = filter_var($input, FILTER_SANITIZE_NUMBER_FLOAT); }
if ($type == "string") {
$input = filter_var($input, FILTER_SANITIZE_STRING);
//$input = filter_var($input, FILTER_SANITIZE_ENCODED);
$input = filter_var($input, FILTER_SANITIZE_MAGIC_QUOTES);
$input = filter_var($input, FILTER_SANITIZE_SPECIAL_CHARS);
$input = filter_var($input, FILTER_SANITIZE_STRIPPED);
//$input = filter_var($input, FILTER_SANITIZE_URL);
}
return $input;

}

У меня вопрос, это лучший способ использования этой функции очистки? Есть ли лучший способ сделать это? Как я уже сказал, безопасность — это моя самая большая забота при создании проектов, и я не хочу рисковать, чтобы случилось что-то плохое, поэтому я бы предпочел оптимизировать безопасность, прежде чем перейти к проектам, которые я делаю.

И последний вопрос: как лучше всего использовать токены CSRF? Я попробовал скрипт из OWASP, но некоторые из моих друзей утверждали, что у него есть несколько уязвимостей, поэтому я не хочу его использовать. Еще раз спасибо 🙂

2

Решение

У меня вопрос, это лучший способ использования этой функции очистки?

Это хороший способ провести санитарную обработку. Все методы дезинфекции со временем улучшатся.

Есть ли лучший способ сделать это?

Если это веб-приложение, которое предоставляет вам пользовательский ввод, вы, возможно, захотите направить пользователя в интерфейсе с вашими ожиданиями (например, (введите номер квартиры, если применимо. В противном случае оставьте это поле пустым)).

JavaScript может использоваться для обеспечения определенного поведения.

Когда данные поступают в ваш PHP-скрипт, после процесса очистки также анализируется, находятся ли данные между X и Y длиной. Например, если клиент вводит возраст, убедитесь, что возраст находится в допустимых пределах.

Если это строка, и вы предпочитаете не иметь оскорбительных тегов, используйте strip_tags удалить их. Выполните кодирование / декодирование / экранирование определенных символов — подумайте об использовании mysqli_real_escape_string, htmlspecialchars,

Кроме того, если в одном кадре выполняется несколько операторов вставки, используйте хранимые процедуры. Используйте транзакции, независимо от процедур. Откат, если все транзакции не завершены, как вы хотите.

Вместо того, чтобы использовать select * from ...выберите необходимые столбцы. Вполне возможно, что некоторые результаты, где требуется всего 2-3 столбца, могут значительно ускориться, если имеется индекс покрытия.

Если ваше приложение использует system, exec и т. д., используя escapeshellargs/escapeshellcmd будет полезно.

При отображении информации в пользовательском интерфейсе убедитесь, что соответствующие поля отображаются с htmlspecialchars чтобы уменьшить / исключить шансы XSS. Также подумайте об использовании urlencode/json_encode как необходимо.

Взгляни на http://www.wikihow.com/Prevent-Cross-Site-Request-Forgery-%28CSRF%29-Attacks-in-PHP это демонстрирует, с примерами, способы предотвращения CSRF-атак.

Комментарии к вашим вопросам — все это хорошие мысли, которые вы должны учитывать, и, что важно, — вы уже сделали шаг в правильном направлении — так хорошо для вас!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]