php 代码清理是多余的还是不正确的?

Is this php code sanitization redundant or incorrect?

假设此代码是在出于清理目的按下表单中的提交按钮后执行的:

<?php
$yourname = check_input(filter_input(INPUT_POST, 'yourname', FILTER_SANITIZE_STRING));
$email = check_input(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL));
$likeit = check_input(filter_input(INPUT_POST, 'likeit', FILTER_SANITIZE_STRING));
$comments = check_input(filter_input(INPUT_POST, 'comments', FILTER_SANITIZE_STRING));

function check_input($data) {
    $data = trim($data) . stripslashes($data) . htmlspecialchars($data);
    return $data;
}
?>

考虑到正在应用filter_input函数,在这种情况下check_input($data)函数是否多余?

check_input 函数的当前代码非常无用:您将输入返回连接了 3 次,但应用了不同的过滤器

function check_input($data) {
    $data = trim($data) . stripslashes($data) . htmlspecialchars($data);
    return $data;
}

关于filter_input():使用FILTER_SANITIZE_STRING应该足够了。来自 documentation:

Strip tags, optionally strip or encode special characters.

这基本上就是您对自己的函数的预期。


不要忘记提防 SQL 注入攻击。按预期使用 prepared statements 将使您安全。