如何进行PHP中的数据过滤和验证

今天就跟大家聊聊有关如何进行PHP中的数据过滤和验证,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联专注于中大型企业的网站设计、成都网站建设和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上1000+,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!

永远不要信任外部输入,不要相信任何来自不受自己直接控制的数据源中的数据。实际开发中,总有人有意或无意的把危险数据注入PHP代码中,因此PHP安全编程变得和重要,一般我们处理外部输入安全思路是:过滤输入、验证数据。

过滤输入

过滤输入是指将来自外部数据中不安全的字符转义或删除。

外部输入可以是任何东西:$_GET 和 $_POST 等表单输入数据,$_SERVER 超全局变量中的某些值,还有通过 fopen('php://input', 'r') 得到的 HTTP 请求体。记住,外部输入的定义并不局限于用户通过表单提交的数据。上传和下载的文档,session 值,cookie 数据,还有来自第三方 web 服务的数据,这些都是外部输入。

在数据到达存储层(MySQL或redis)前一定要过滤输入的数据,这是第一道防线。

假如有人在评论框中输入以下内容并提交:

<script>alert("Helloweba");</script>

很显然,这里加了恶意的<script>标签,如果我们不加任何处理,那么数据就直接进存储层了,然后用户再浏览网页的时候就会输出弹出警告框了。所以这就是我们为什么不要相信任何外部输入的原因。

那么,如何使用PHP处理过滤输入数据呢?以下是我的几点建议:

1、对于需要输出到页面的内容,使用strip_tags()函数来去除 HTML 标签或者使用 htmlentities()或是htmlspecialchars()函数来对特殊字符分别进行转义从而得到各自的HTML实体,避免XSS攻击。如对上面的script脚本过滤:

<?php $input = '<script>alert("Helloweba");</script>'; echo htmlentities($input, ENT_QUOTES, 'utf-8');

2、如果需要传入能够在命令行中执行的选项,调用exec()等函数时要格外小心。你可以使用自带的 escapeshellarg()函数来过滤执行命令的参数。

3、通过输入数据拼接构建的SQL查询语句,一定要注意使用PDO预处理。PDO是PHP内置的数据库抽象层,使用一个接口表示多种数据库。PDO预处理语句是PDO提供的一个工具,用于过滤外部数据,然后把过滤后的数据嵌入SQL语句中,避免SQL注入。

4、当接收外部输入来从文件系统中加载文件。这可以通过将文件名修改为文件路径来进行利用。你需要过滤掉"/", "../", null 字符或者其他文件路径的字符来确保不会去加载隐藏、私有或者敏感的文件。

5、尽量不要使用正则表达式函数过滤HTML输入,如preg_replace()preg_replace_all(),正则表达式很复杂,一不小心就掉坑里了,出错几率高。

验证数据

与过滤输入不同,验证数据不会从输入数据中删除信息,而是只确认输入数据是否符合预期,比如输入的数据是否是Email邮箱、手机号码、数字等等。这种数据我们或叫做无效数据,我们验证这种无效数据,并阻止其进入数据存储层,并适当的提示用户错误的输入信息。

PHP的filter_var()filter_input()函数可以过滤文本并对格式进行验证。PHP提供了验证布尔值、Email、浮点数、整数、IP地址、MAC地址、正则表达式以及URL地址的标志,如以下代码是验证输入的邮箱是否正确:

$input = 'hello@example.com'; $isEmail = filter_var($input, FILTER_VALIDATE_EMAIL); if ($isEmail !== false) {    echo '验证结果:成功'; } else {    echo '验证结果:失败'; }

我们需要特别注意filter_var()函数的返回值,如果验证成功,返回的是要验证的值,如果验证失败,则返回false。

附PHPfilter_var()函数的验证标志:

FILTER_VALIDATE_BOOLEAN: 布尔值

FILTER_VALIDATE_EMAIL: Email

FILTER_VALIDATE_FLOAT: 浮点数

FILTER_VALIDATE_INT: 整数

FILTER_VALIDATE_IP: IP地址

FILTER_VALIDATE_MAC: MAC地址

FILTER_VALIDATE_REGEXP: 正则表达式

FILTER_VALIDATE_URL: URL地址

最后,说明下,黑客都是通过使用工具或非正常手段,绕过我们的前端验证,构建危险数据进行WEB渗透,所以我们代码开发时,尤其是后端开发,安全是我们的首要任务。接下来Helloweba将继续给大家提供开发级别的安全防范文章,敬请关注。

看完上述内容,你们对如何进行PHP中的数据过滤和验证有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。

网站标题:如何进行PHP中的数据过滤和验证
文章URL:https://www.cdcxhl.com/article8/ghscop.html

成都网站建设公司_创新互联,为您提供网站设计公司自适应网站小程序开发网站收录网站内链网站排名

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设