安全矩阵

 找回密码
 立即注册
搜索
查看: 4721|回复: 0

PHP安全:敏感信息泄露

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-10-24 09:29:34 | 显示全部楼层 |阅读模式
原文链接:PHP安全:敏感信息泄露

不少PHP项目中没能正确地保护敏感数据,如某些信用卡、用户ID和身份验证凭据Token。攻击者可能会窃取或者篡改这些数据以进行诈骗、身份窃取或其他非法操作。敏感数据需额外保护,要在存放、传输过程中进行必要的加密,以及在与浏览器交换时实施特殊的预防措施。防止恶意用户获取其他合法用户的隐私数据,甚至通过获取服务器中的敏感数据达到控制服务器的目的。敏感数据的不正确保护主要体现在以下几点。


(1)敏感数据存储时未加密,常见的有密码、身份证、信用卡明码保存在数据库中。

(2)用户敏感数据在传输过程中采用明文传输,密码未经加密直接发送到服务端。

(3)使用旧的或脆弱的加密算法等,只进行简单的MD5计算。

1、登录密码泄露

在用户输入登录密码从浏览器传输到服务器的过程中没有使用数字摘要进行加密,攻击者对数据进行拦截或者抓包,造成明文密码泄露,从而获取用户的明文密码。在身份验证时传输的用户名和密码等应当加密处理后再进行传输。

2、登录信息泄露

如果在需要身份验证的Web上都没有使用SSL加密,攻击者只需监控网络数据流(比如一个开放的无线网络),并窃取一个已通过验证的用户会话Cookie,然后利用这个Cookie执行重放攻击并接管用户的会话,就可访问用户的隐私数据。为了防止重放攻击,可以在验证时加个随机数,以保证验证单次有效。


3、资源遍历泄露

资源遍历泄露是指,在接口传入的参数中存在资源ID类参数,ID为递增整数且权限控制不当将导致资源被遍历。为了防止这种情况,例如用户上传的文件ID、用户ID、企业ID、商品ID、订单ID等,尽量不使用连续的ID序号。表1所列为资源遍历泄露风险点。

表1  资源遍历泄露风险点列举

4、物理路径泄露

当攻击者通过接口输入非法数据时,导致服务器端应用程序出现错误,并返回网站物理路径。攻击者利用此信息,可通过本地文件包含漏洞直接得到webshell。系统上线后应当关闭PHP的错误输出,防止调试信息泄露,或者当应用程序出错时,统一返回一个错误页面或直接跳转至首页。

通过PHP配置关闭错误显示如下。

#php.ini
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT // 错误类型
display_errors=off // 禁止错误显示
display_startup_errors=off // 禁用display_startup_errors设置防止PHP的启动过程中被显示给用户的特定错误

PHP程序代码中关闭错误显示如下。

<?php
ini_set('display_errors',false); // 关闭错误显示
ini_set('error_reporting',E_ALL&~E_NOTICE&~E_WARNING); // 设置日志记录类型

5、程序使用版本泄露

如果传送大量的数据时,应用程序报错并返回应用程序版本,攻击者可利用此信息,查找官方漏洞文档,并利用现有exploit code实施攻击。

Apache关闭版本号显示如下。

# http.conf
ServerTokens Prod
ServerSignature off #设置为off禁止显示版本号

PHP关闭版本号显示如下。

expose_php = Off   # 设置为Off禁止显示版本号

Nginx关闭版本号显示如下。

# nginx.conf
server_tokens off # 设置为Off禁止显示版本号

6、JSON劫持导致用户信息泄露

QQ Mail曾经曝出相关漏洞,比如通过构造URL让用户访问,可以获得QQ Mail的邮件列表。该漏洞由于需要在Web QQ里共享QQ Mail里的邮件信息,因此QQ Mail开放了一个JSON接口以提供第三方的域名来获得QQ Mail的信息,但是由于该接口缺乏足够的认证,因此导致任何第三方域名都可以用Script的方式来获取该邮件列表。

尽量避免跨域的数据传输,对于同域的数据传输使用XMLHttp的方式作为数据获取方式,通过JavaScript在浏览器域里的安全性保护数据。如果是跨域的数据传输,必须对敏感的数据获取进行权限认证,例如对referer的来源进行限制、加入Token等。

7、源代码泄露

攻击者可利用程序扩展名解析缺陷,访问隐藏的文件,并获取源代码,或者通过程序BUG,直接返回源代码,获取重要数据,进而实施下一步攻击。因此,要合理设置服务器端各种文件的访问权限。

由于经常要对代码进行上线、备份、移动等操作,往往会疏忽文件管理而造成源码泄露,所以需要定期在Web能访问到的目录下警惕以下几类文件的出现,如出现,应及时删除,以防范源码泄露。

.git
.svn
.bak
.rar
.zip
.7z
.tar.gz
.swp
.txt
.html




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 10:56 , Processed in 0.012528 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表