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 将使您安全。
假设此代码是在出于清理目的按下表单中的提交按钮后执行的:
<?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 将使您安全。