欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

新手培养php一些良好的安全习惯:关闭错误提示和严格数据验证等

程序员文章站 2022-04-23 12:57:20
...
大家在使用php进行web开发的时候,进场需要注意一些安全配置项,关闭某些功能,防止用户不经意出现各种问题。

1. 关闭php提示错误功能

在php.ini 中把display_errors改成OFF,或在php文件前加入error_reporting(0)。

使用error_reporting(0);失败的例子:

<?php  
error_reporting(0);  
echo 555  
echo 444;  
?>

错误:

Parse error: parse error, expecting `','' or `';'' in E:\webphp\2.php on line 4

很多phper说用error_reporting(0)不起作用。第一个例子A.php里面有致命错误,导致不能执行,不能执行服务器则不知有这个功能,所以一样报错。

2. 关闭一些“坏功能”

1)关闭magic quotes功能

在php.ini 把magic_quotes_gpc = OFF
避免和addslashes等重复转义

2)关闭register_globals = Off

在php.ini 把register_globals = OFF

在register_globals = ON的情况下

<?php  
//$bloger = $_GET['bloger']   
//因为register_globals = ON 所以这步不用了直接可以用$bloger  
echo $bloger;  
?>

这种情况下会导致一些未初始化的变量很容易被修改,这也许是致命的。所以把register_globals = OFF关掉

(3)严格配置文件权限。

为相应文件夹分配权限,比如包含上传图片的文件不能有执行权限,只能读取

3. 严格的数据验证,我们要做的是严格验证控制数据流,哪怕10000万用户中有一个是坏用户也足以致命,再说好的用户也有时在数据input框无意输入中文的时,他已经不经意变“坏”了。

为了确保程序的安全性,健壮性,数据验证应该包括

(1) 关键数据是否存在。如删除数据id是否存在
(2) 数据类型是否正确。如删除数据id是否是整数
(3) 数据长度。如字段是char(10)类型则要strlen判断数据长度
(4) 数据是否有危险字符

数据长度问题,如数据库建表字段char(25),大多phper考虑到是否为空、数据类型是否正确,却忽略字符长度,忽略还好更多是懒于再去判断长度。

以为前端用js判断验证过了,后台不需要判断验证。这也是致命,要知道伪造一个表单就几分钟的事,js判断只是为了减少用户提交次数从而提高用户体验、减少http请求减少服务器压力,在安全情况下不能防“小人”,当然如果合法用户在js验证控制下是完美的,但作为phper我们不能只有js验证而抛弃再一次安全验证。

缺少对表单某些属性比如select、checkbox、radio、button等的验证,这些属性在web页面上开发者已经设置定其值和值域(白名单值),这些属性值在js验证方面一般不会验证,因为合法用户只有选择权没修改权,然后phper就在后端接受数据处理验证数据的时候不会验证这些数据,这是一个惯性思维,安全问题也就有了,小人一个伪表单。

表单相应元素name和数据表的字段名一致,如用户表用户名的字段是user_name,然后表单中的用户名输入框也是user_name,这和暴库没什么区别。

以上就是新手培养php一些良好的安全习惯:关闭错误提示和严格数据验证等的详细内容,更多请关注其它相关文章!

相关标签: php 关闭 习惯