如果您未能正确对数据应用 PHP 过滤(清理和验证),则可能会出现安全问题。考虑并不总是来自安全来源的外部数据尤为重要。
来自代码外部的所有数据都应始终进行验证和清理,以防止数据插入和其他与用户输入相关的安全风险。外部数据也来自服务器和数据库。
PHP 过滤通过删除所有非法字符来清理数据。此外,它可以验证数据,检查信息是否采用正确的形式。
内容
PHP 过滤:主要提示
PHP 包括内置的过滤器功能,允许验证或清理您通过表单或其他方式输入的数据。
如果要在不触发代码的情况下使用特殊字符作为文本,从而防止数据插入,这将非常有用。
验证数据意味着确定数据的形式是否正确。
清理数据意味着从数据中删除任何特殊字符。
使用 filter_lists()
要查看 PHP 过滤器提供的功能,请使用下面的代码示例中所示的函数:filter_lists()
例复制
<ul> <?php foreach (filter_list() as $id => $filter) {
echo '<li>' . $filter . ', ' . filter_id($filter) . '</li>';
} ?></ul>
filter_var() 函数说明
验证和清理数据的函数称为 。初始化时需要两个变量。第一个参数指示要清理的变量。第二个指定要使用的筛选器。filter_var()
清理数据的原因
Web 应用程序中的外部输入有许多用途:
来自表单的用户定义输入。
饼干数据。
网络服务数据。
服务器变量数据。
数据库查询的结果。
进行过滤器输入
现在,我们将使用代码示例来解释如何在各种类型的外部数据上使用PHP过滤。让我们一步一步地回顾它们。
字符串和整数
下面的示例显示了如何使用 PHP 过滤器清理字符串:filter_var()
例复制
<?php $str = "<h1>Hey!</h1>"; $newstring = filter_var($str, FILTER_SANITIZE_STRING); echo $newstring;?>
下面的代码示例说明了如何使用来检查变量是否为整数,以及根据结果显示消息:filter_var()
例复制
<?php
$int = 87; if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo "This is an integer.";
} else {
echo "This is not an integer. Or at least not a valid one. Read more about that.";
}?>
不过,这里可能会出现一个小问题。如果值等于 0(即使变量是整数),将返回 。使用此代码来解决此问题:filter_var()false
例复制
<?php
$int = 0; if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) { echo "This is an integer.";
} else { echo "This is DEFINiTELY not an integer";
}?>
IP 地址、电子邮件和网址
仔细查看提供的代码片段。在其中,我们用于检查变量是否是有效的 IP 地址。您可以在代码中看到两种可能的响应。将显示哪一个,取决于验证结果:filter_var()
例复制
<?php
$ip = "127.0.0.1"; if (!filter_var($ip, FILTER_VALIDATE_IP) === false) { echo "Pretty sure that $ip indeed is working, valid IP address.";
} else {
echo "$ip ? Nope. NOT a valid IP address, I can tell you that much.";
}?>
现在,在下一个示例中,PHP 再次用于验证和清理,但这次对象是 URL 地址。看一看:fi
现在,在下一个示例中,PHP 再次用于验证和清理,但这次对象是 URL 地址。看一看:filter_var()
例复制
<?php
$url = "https://www.bitdegree.org/learn/";
// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL); // Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) { echo "$url is TOTALLY legit. Really, it's a valid URL.";
} else { echo "$url is DEFINITLELY not a valid, working URL";
}?>
PHP 过滤:摘要
内置的 PHP 过滤功能可让您轻松验证和清理您输入或用户输入的数据。
验证意味着查找相关数据的格式是否正确。
清理会删除数据可能包含的所有特殊字符。通过让 PHP 清理表单数据,您可以确保只获得预期的输入。
陕公网安备 61012502000223号
评论一下吧