2023年PHP安全性漫谈.docx
《2023年PHP安全性漫谈.docx》由会员分享,可在线阅读,更多相关《2023年PHP安全性漫谈.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年PHP安全性漫谈 PHP安全性漫谈 今日,我在这里所商量的安全性环境是在Linux+Apache+Mysql+PHP。超出此范围的安全性问题不在本文范畴之内。 一、apache server安全性设置 1、以Nobody用户运行 一般状况下,Apache是由Root 来安装和运行的。假如Apache Server进程具有Root用户特权,那么它将给系统的安全构成很大的威逼,应确保Apache Server进程以最可能低的权限用户来运行。通过修改 d.conf文件中的以下选项,以Nobody用户运行Apache 到达相对安全的目的。 User nobody Group -1 2、Ser
2、verRoot名目的权限 为了确保全部的配置是适当的和安全的,需要严格掌握Apache 主名目的访问权限,使非超级用户不能修改该名目中的内容。Apache 的主名目对应于Apache Server配置文件 d.conf的Server Root掌握项中,应为: Server Root /usr/local/apache 3、SSI的配置 在配置文件access.conf 或 d.conf中确实Options指令处加入Includes NO EXEC选项,用以禁用Apache Server 中的执行功能。避开用户直接执行Apache 服务器中的执行程序,而造成服务器系统的公开化。 Options
3、Includes Noexec 4、阻挡用户修改系统设置 在Apache 服务器的配置文件中进行以下的设置,阻挡用户建立、修改 .htaccess文件,防止用户超越能定义的系统安全特性。 AllowOveride None Options None Allow from all 然后再分别对特定的名目进行适当的配置。 5、转变Apache 服务器的缺省访问特性 Apache 的默认设置只能保障肯定程度的安全,假如服务器能够通过正常的映射规则找到文件,那么客户端便会获取该文件,如 :/local host/ root/ 将允许用户访问整个文件系统。在服务器文件中加入如下内容: order den
4、y,ellow Deny from all 将禁止对文件系统的缺省访问。 6、CGI脚本的安全考虑 CGI脚本是一系列可以通过Web服务器来运行的程序。为了保证系统的安全性,应确保CGI的作者是可信的。对CGI而言,最好将其限制在一个特定的目 录下,如cgi-bin之下,便于管理;另外应当保证CGI名目下的文件是不行写的,避开一些欺骗性的程序驻留或混迹其中;假如能够给用户提供一个安全性 良好的CGI程序的模块作为参考,或许会削减很多不必要的麻烦和安全隐患;除去CGI名目下的全部非业务应用的脚本,以防异样的信息泄漏。 7、SSL链接加密 以上这些常用的举措可以给Apache Server 一个基
5、本的安全运行环境,明显在具体实施上还要做进一步的细化分解,制定出符合实际应用的安全配置方案。 二、PHP安全性设置 服务器并不能阻挡全部的安全问题,例如程序漏洞问题、用户输入表单问题、PHP文件权限问题等。 也可以通过一些手段来迷惑黑客或者别有专心者。 1、程序代码漏洞问题 许多 PHP 程序所存在的重大弱点并不是 PHP 语言本身的问题,而是编程者的安全意识不高而导致的。因此,必需时时留意每一段代码可能存在的问题,去发觉非正确数据提交时可能造成的影响。 unlink $evil_var; fwrite $fp, $evil_var; system $evil_var; exec $evil_
6、var; ?> 必需时常留意你的代码,以确保每一个从客户端提交的变量都经过适当的检查,然后问自己以下一些问题: 此脚本是否只能影响所预期的文件? 非正常的数据被提交后能否产生作用? 此脚本能用于打算外的用处吗? 此脚本能否和其它脚本结合起来做坏事? 是否全部的事务都被充分记录了? 在写代码的时候问自己这些问题,否则以后可能要为了增加安全性而重写代码了。留意了这些问题的话,或许还不完全能保证系统的安全,但是至少可以提高安全性。 还可以考虑关闭 register_globals,Magic_quotes 或者其它使编程更方便但会使某个变量的合法性,来源和其值被搞乱的设置。 2、用户输入表单问
7、题 验证用户输入的任何数据,保证PHP代码的安全。 留意1:JS只是为了提高来访用户的体验而产生的,而不是验证的工具。因为任何一个来访的用户都可能会,也有可能无意间就禁用了客户端脚本的执行,从而跳过这层验证。所以我们必需在PHP的服务器端程序上检验这些数据。 留意2:不要使用$_SERVER&39;HTTP_REFERER&39;这个超级变量来检查数据的来源地址,一个很小的菜鸟黑客都会利用工具来伪造这个变量的数据,尽可能利用Md5,或者rand等函数来产生一个令牌,验证来源的时候,验证这个令牌是否匹配。 3、PHP文件权限问题 PHP 被设计为以用户级别来访问文件系统,所以完全有可能通过编写一
8、段 PHP 代码来读取系统文件如 /etc/passwd,更改网络连接以及发送大量打印任务等等。因此必需确保 PHP 代码读取和写入的是合适的文件。 请看下面的代码,用户想要删除自己主名目中的一个文件。假设此情形是通过 web 界面来管理文件系统,因此 Apache 用户有权删除用户名目下的文件。 $username = $_POST&39;user_submitted_name&39; $homedir = "/home/$username" $file_to_delete = "$userfile" unlink "$homedir/$us
9、erfile" echo "$file_to_delete has been deleted!" ?> 既然 username 变量可以通过用户表单来提交,那就可以提交别人的用户名和文件名,并删除该文件。这种状况下,就要考虑其它方式的认证: 只给 PHP 的 web 用户很有限的权限。 -检查全部提交上来的变量。 -以下是更加安全的文件名和变量的验证和检查: $username = $_SERVER&39;REMOTE_USER&39; $homedir = "/home/$username" if !ereg&39;./*$&39;,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 PHP 安全性 漫谈
限制150内