1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP安全性漫谈之PHP安全性设置

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

时间:2020-08-20 22:18:03

相关推荐

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

后端开发|php教程

网站安全

后端开发-php教程

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

面包网 源码,sip指令安装ubuntu,tomcat提高速度,csdn网络爬虫,linux下php环境,内部seo与外部seolzw

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

摇一摇源码,vscode自动生成参数注释,ubuntu 编写代码,重定向tomcat日志,robot网络爬虫,php修改txt文件,沈阳做seo哪家服务好,简洁大方网站源码,jquery化妆品网站模板下载lzw

1、程序代码漏洞问题

h5牛牛源码,vscode无法连接远程环境,ubuntu做dns,阿里云解析tomcat,scrapy爬虫 循环,cli执行php,如何在seo上推广快照,买一个网站源码,通用型文章系统模板程序源码lzw

很多 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(ad filename); if (!ereg(^[^./][^/]*$, $username)) die(ad 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 文件的扩展名改为以上的扩展名。这样就通过隐藏来提高了安全性,虽然防御能力很低而且有些缺点。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。