这个PHP代码清理是多余的还是不正确的?

时间:2018-03-03 18:45:36

标签: php forms sanitization input-sanitization

我们说这个代码是在按下提交按钮后执行的,目的是消毒:

<?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)函数是多余的吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

  

剥离标签,可选择剥离或编码特殊字符。

这基本上就是你想要的功能。

不要忘记注意SQL注入攻击。按预期使用prepared statements可以确保您的安全。