博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php中assert方法的安全问题
阅读量:6244 次
发布时间:2019-06-22

本文共 1006 字,大约阅读时间需要 3 分钟。

php中assert本来是用于调试的,如果assert方法内的代码不为true,则给个Warning提醒。如下面的代码。

执行后会有如下输出:

Warning: assert(): Assertion "1==2" failed in D:\green\APMServ5.2.6\www\htdocs\phpinfo.php on line 2

有个assert_option方法可以对assert进行一些控制。默认值如下:

ASSERT_ACTIVE=1 //Assert函数的开关
ASSERT_WARNING =1 //当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion
ASSERT_BAIL= 0 //是否要中止运行;terminate execution on failed assertions
ASSERT_QUIET_EVAL= 0 //是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation
ASSERT_CALLBACK= (NULL) // 是否启动回调函数 user function to call on failed assertions

如果按照默认值,当assert进行判断时,如果为false,则会发出Warning的提醒,但是依然会继续向下执行。对于调试很好,尤其是可以使用callback,但是生产环境就不建议使用了。

assert的callback的使用如下:

Assertion Failed:File '$file'
Line '$line'
Code '$code'

";} // Set up the callbackassert_options(ASSERT_CALLBACK, 'my_assert_handler'); // Make an assertion that should failassert('mysql_query("")');?>
但是,assert也有安全问题,这个也是不建议在生产环境使用assert的一个重要原因。请看如下代码:

如果对用户输入的数据过滤不严谨的话,assert的危害比eval还要大。

转载地址:http://hpvia.baihongyu.com/

你可能感兴趣的文章
学习笔记:查最大内存
查看>>
javascript设计模式与开发实践(二)- 封装和原型模式
查看>>
1475: 方格取数
查看>>
太阳黑子
查看>>
[转载]date命令时间转换
查看>>
适配iOS11新特性代码在Xcode8 上编译通过的方法
查看>>
别再问什么是Java内存模型了,看这里!
查看>>
2014.5.7—20岁这几年
查看>>
javac - Java programming language compiler
查看>>
异常处理
查看>>
Python多线程程序中的MYSQL连接管理研究
查看>>
Prometheus学习系列(七)之名词解析
查看>>
一文彻底搞懂Dart的event队列
查看>>
iOS面试题06-其他
查看>>
JSON和JSONP
查看>>
2019年互联网女皇趋势报告:小程序创新创业商业模式引领全球
查看>>
C# 递归模型定义。赋值
查看>>
复合文字
查看>>
建立TCP连接的三次握手
查看>>
2017年软件工程第四次作业-1代码规范
查看>>