目录
1、程序代码漏洞问题
2、用户输入表单问题
3、PHP文件权限问题
4、隐藏PHP扩展名
首页 后端开发 php教程 PHP安全性漫谈之PHP安全性设置

PHP安全性漫谈之PHP安全性设置

Jun 20, 2016 pm 01:02 PM
网站安全

PHP安全性漫谈之PHP安全性设置

服务器并不能阻止所有的安全问题,例如程序漏洞问题、用户输入表单问题、PHP文件权限问题等。也可以通过一些手段来迷惑黑客或者别有用心者。

1、程序代码漏洞问题

很多 PHP 程序所存在的重大弱点并不是 PHP 语言本身的问题,而是编程者的安全意识不高而导致的。因此,必须时时注意每一段代码可能存在的问题,去发现非正确数据提交时可能造成的影响。

  
unlink ($evil_var);    
fwrite ($fp, $evil_var);    
system ($evil_var);    
exec ($evil_var);    
登录后复制

必须时常留意你的代码,以确保每一个从客户端提交的变量都经过适当的检查,然后问自己以下一些问题:

  • 此脚本是否只能影响所预期的文件?
  • 非正常的数据被提交后能否产生作用?
  • 此脚本能用于计划外的用途吗?
  • 此脚本能否和其它脚本结合起来做坏事?
  • 是否所有的事务都被充分记录了?

在写代码的时候问自己这些问题,否则以后可能要为了增加安全性而重写代码了。注意了这些问题的话,也许还不完全能保证系统的安全,但是至少可以提高安全性。

还可以考虑关闭 register_globals,magic_quotes 或者其它使编程更方便但会使某个变量的合法性,来源和其值被搞乱的设置。

2、用户输入表单问题

验证用户输入的任何数据,保证PHP代码的安全。
注意1:JS只是为了提高来访用户的体验而产生的,而不是验证的工具。因为任何一个来访的用户都可能会,也有可能无意间就禁用了客户端脚本的执行,从而跳过这层验证。所以我们必须在PHP的服务器端程序上检验这些数据。
注意2:不要使用$_SERVER['HTTP_REFERER']这个超级变量来检查数据的来源地址,一个很小的菜鸟黑客都会利用工具来伪造这个变量的数据,尽可能利用Md5,或者rand等函数来产生一个令牌,验证来源的时候,验证这个令牌是否匹配。

3、PHP文件权限问题

PHP 被设计为以用户级别来访问文件系统,所以完全有可能通过编写一段 PHP 代码来读取系统文件如 /etc/passwd,更改网络连接以及发送大量打印任务等等。因此必须确保 PHP 代码读取和写入的是合适的文件。 请看下面的代码,用户想要删除自己主目录中的一个文件。假设此情形是通过 web 界面来管理文件系统,因此 Apache 用户有权删除用户目录下的文件。

 
$username = $_POST['user_submitted_name'];  
$homedir = "/home/$username";  
$file_to_delete = "$userfile";  
unlink ("$homedir/$userfile");  
echo "$file_to_delete has been deleted!";  
登录后复制

既然 username 变量可以通过用户表单来提交,那就可以提交别人的用户名和文件名,并删除该文件。这种情况下,就要考虑其它方式的认证:

  • 只给 PHP 的 web 用户很有限的权限。
  • 检查所有提交上来的变量。

以下是更加安全的文件名和变量的验证和检查:


$username = $_SERVER['REMOTE_USER'];   
$homedir = "/home/$username";  
if (!ereg('^[^./][^/]*$', $userfile))  
die('bad filename');   
if (!ereg('^[^./][^/]*$', $username))  
die('bad username');   
登录后复制

4、隐藏PHP扩展名

一般而言,通过隐藏的手段提高安全性被认为是作用不大的做法。但某些情况下,尽可能的多增加一份安全性都是值得的。

一些简单的方法可以帮助隐藏 PHP,这样做可以提高攻击者发现系统弱点的难度。在 php.ini 文件里设置 expose_php = off ,可以减少他们能获得的有用信息。

另一个策略就是让 web 服务器用 PHP 解析不同扩展名。无论是通过 .htaccess 文件还是 Apache 的配置文件,都可以设置能误导攻击者的文件扩展名:

# 使PHP看上去像其它的编程语言
AddType application/x-httpd-php .asp .py .pl # 使 PHP 看上去像未知的文件类型
AddType application/x-httpd-php .bop .foo .133t
# 使 PHP 代码看上去像 HTML 页面
AddType application/x-httpd-php .htm .html
登录后复制


要让此方法生效,必须把 PHP 文件的扩展名改为以上的扩展名。这样就通过隐藏来提高了安全性,虽然防御能力很低而且有些缺点。

 


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
php CodeIgniter安全指南:保护你的网站免遭攻击 php CodeIgniter安全指南:保护你的网站免遭攻击 Feb 19, 2024 pm 06:21 PM

1.使用最新版本的CodeIgniterCodeIgniter团队会定期发布安全补丁和更新来修复已知的漏洞。因此,确保你始终使用最新版本的CodeIgniter非常重要。你可以通过访问CodeIgniter的官方网站来下载最新版本。2.强制使用安全连接(HTTPS)https可以加密你的网站和用户之间传递的数据,使其更难被恶意用户截获和窃取。你可以通过在你的服务器上安装SSL证书来启用HttpS。3.避免使用默认配置CodeIgniter提供了许多默认配置来简化开发过程。但是,这些默认配置可能并

网站安全开发实践:如何防止XML外部实体攻击(XXE) 网站安全开发实践:如何防止XML外部实体攻击(XXE) Jun 29, 2023 am 08:51 AM

网站安全开发实践:如何防止XML外部实体攻击(XXE)随着互联网的发展,网站已经成为人们获取和共享信息的重要途径。然而,随之而来的风险也在不断增加。其中之一就是XML外部实体攻击(XXE),这是一种利用XML解析器漏洞的攻击方式。在这篇文章中,我们将介绍什么是XXE攻击以及如何防止它。一、什么是XML外部实体攻击(XXE)?XML外部实体攻击(XXE)是一种

网站安全开发实践:如何防止SSRF攻击 网站安全开发实践:如何防止SSRF攻击 Jun 29, 2023 am 11:58 AM

网站安全开发实践:如何防止SSRF攻击随着互联网的迅速发展,越来越多的企业和个人选择将业务搬上云端,网站安全问题也日益引起人们的关注。其中一种常见的安全威胁是SSRF(Server-SideRequestForgery,服务端请求伪造)攻击。本文将介绍SSRF攻击的原理和危害,并提供一些常用的防范措施,帮助开发人员加固网站的安全性。SSRF攻击的原理和危

利用ThinkPHP6实现网站安全检测 利用ThinkPHP6实现网站安全检测 Jun 20, 2023 am 09:03 AM

随着互联网的不断发展,越来越多的网站涌现出来,但与此同时,网站的安全问题也愈发严重。黑客攻击、恶意软件、SQL注入等安全漏洞令网站运营商头疼不已。为了保证网站的安全性,网站建设和运营过程中的安全检测也显得尤为重要。本文将介绍如何利用ThinkPHP6实现网站安全检测,帮助网站运营者进一步提升网站安全性。一、什么是ThinkPHP6ThinkPHP6是一款PH

详解Discuz取消验证码功能对网站安全性的影响 详解Discuz取消验证码功能对网站安全性的影响 Mar 11, 2024 am 10:45 AM

《Discuz取消验证码功能对网站安全性的影响探讨》随着互联网的快速发展,网站安全问题日益凸显。验证码作为一种常见的安全验证机制,在网站中被广泛应用。然而,有些网站为了提高用户体验,可能会取消验证码功能,这是否会对网站安全性造成负面影响呢?本文将就Discuz取消验证码功能对网站安全性的影响进行探讨,并提供具体的代码示例。一、验证码的作用及原理验证码(CAP

使用宝塔面板进行HTTPS升级,提升网站安全性 使用宝塔面板进行HTTPS升级,提升网站安全性 Jun 21, 2023 am 10:15 AM

随着互联网的发展,网站已成为企业展示形象和与外界交流的重要渠道。然而,随之而来的网络安全问题也确实令人担忧。许多网站管理者可能已经意识到通过使用HTTPS协议来保护用户数据和交易信息的重要性,但是对于如何实现HTTPS升级可能还不是非常了解。本文将介绍如何利用宝塔面板来进行HTTPS升级,提升网站的安全性。一、什么是HTTPS?HTTP是超文本传输协议,是一

PHP防火墙实现:网站安全架构设计指南 PHP防火墙实现:网站安全架构设计指南 Jun 30, 2023 pm 06:57 PM

网站安全架构设计指南:PHP防火墙的实现引言:在现如今的互联网时代,网站安全问题日益严峻,不断有黑客利用漏洞入侵网站,盗取用户信息或破坏网站正常运行。为了保护网站及其用户的隐私和安全,建立一个可靠的安全架构是至关重要的。本文将重点介绍PHP防火墙的实现,为网站安全架构提供指导。一、什么是PHP防火墙?PHP防火墙是一种屏蔽恶意攻击和入侵的安全措施,它通过过滤

PHP 网站安全与防护措施 PHP 网站安全与防护措施 May 04, 2024 pm 10:48 PM

PHP网站安全措施包括:防止SQL注入:使用预处理语句或转义用户输入。防止XSS:转义用户输入。防止CSRF:使用CSRF令牌。防止缓冲区溢出:设置最大输入长度。保持更新、使用安全框架、启用防火墙、监控网站、进行安全审核。

See all articles