PHP安全性漫谈之PHP安全性设置
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 文件的扩展名改为以上的扩展名。这样就通过隐藏来提高了安全性,虽然防御能力很低而且有些缺点。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

1.使用最新版本的CodeIgniterCodeIgniter團隊會定期發布安全修補程式和更新來修復已知的漏洞。因此,確保你始終使用最新版本的CodeIgniter非常重要。你可以透過造訪CodeIgniter的官方網站來下載最新版本。 2.強制使用安全連線(HTTPS)https可以加密你的網站和使用者之間傳遞的數據,使其更難被惡意使用者截獲和竊取。你可以透過在你的伺服器上安裝SSL憑證來啟用HttpS。 3.避免使用預設配置CodeIgniter提供了許多預設配置來簡化開發過程。但是,這些預設配置可能並

網站安全開發實務:如何防止XML外部實體攻擊(XXE)隨著網路的發展,網站已成為人們獲取和分享資訊的重要途徑。然而,隨之而來的風險也不斷增加。其中之一就是XML外部實體攻擊(XXE),這是一種利用XML解析器漏洞的攻擊方式。在這篇文章中,我們將介紹什麼是XXE攻擊以及如何防止它。一、什麼是XML外部實體攻擊(XXE)? XML外部實體攻擊(XXE)是一種

網站安全開發實務:如何防止SSRF攻擊隨著網路的快速發展,越來越多的企業和個人選擇將業務搬上雲端,網站安全問題也日益引起人們的關注。其中一個常見的安全威脅是SSRF(Server-SideRequestForgery,服務端請求偽造)攻擊。本文將介紹SSRF攻擊的原理與危害,並提供一些常用的防範措施,幫助開發人員加強網站的安全性。 SSRF攻擊的原理與危

隨著網路的不斷發展,越來越多的網站湧現出來,但同時,網站的安全問題也愈發嚴重。駭客攻擊、惡意軟體、SQL注入等安全漏洞令網站業者頭痛不已。為了確保網站的安全性,網站建置和營運過程中的安全檢測也顯得格外重要。本文將介紹如何利用ThinkPHP6實現網站安全偵測,協助網站業者進一步提升網站安全性。一、什麼是ThinkPHP6ThinkPHP6是一款PH

《Discuz取消驗證碼功能對網站安全性的影響探討》隨著網路的快速發展,網站安全問題日益凸顯。驗證碼作為常見的安全驗證機制,在網站中廣泛使用。然而,有些網站為了提高使用者體驗,可能會取消驗證碼功能,這是否會對網站安全性造成負面影響?本文將就Discuz取消驗證碼功能對網站安全性的影響進行探討,並提供具體的程式碼範例。一、驗證碼的作用及原理驗證碼(CAP

隨著網路的發展,網站已成為企業展示形象和與外界交流的重要管道。然而,隨之而來的網路安全問題也確實令人擔憂。許多網站管理者可能已經意識到透過使用HTTPS協定來保護使用者資料和交易資訊的重要性,但是對於如何實現HTTPS升級可能還不是非常了解。本文將介紹如何利用寶塔面板進行HTTPS升級,提升網站的安全性。一、什麼是HTTPS? HTTP是超文本傳輸協議,是一

網站安全架構設計指南:PHP防火牆的實現引言:在現今的互聯網時代,網站安全問題日益嚴峻,不斷有駭客利用漏洞入侵網站,盜取用戶資訊或破壞網站正常運作。為了保護網站及其使用者的隱私和安全,建立一個可靠的安全架構是至關重要的。本文將重點放在PHP防火牆的實現,為網站安全架構提供指導。一、什麼是PHP防火牆? PHP防火牆是一種屏蔽惡意攻擊和入侵的安全措施,它透過過濾

PHP網站安全措施包括:防止SQL注入:使用預處理語句或轉義使用者輸入。防止XSS:轉義用戶輸入。防止CSRF:使用CSRF令牌。防止緩衝區溢位:設定最大輸入長度。保持更新、使用安全框架、啟用防火牆、監控網站、進行安全審核。
