A. 怎么保护你的php源代码 - PHP进阶讨论
zend对php5混淆加密好像不能解密吧zend加密php4倒是能解密,不过也只能解密95%左右,通过整个代码去研究那5%的未知代码,工作量不小于自己重写一套程序,甚至更耗时。所以,个人认为zend加密已经很好了。
从这篇文章开始,我们将学习一系列的 PHP 文件系统相关函数。其实这些函数中,有很多都是我们经常用到的,大家并不需要刻意地去记住它们,只要知道有这么个东西,在使用的时候记得来查文档就可以了。
文件路径相关的函数往往在一些框架中会比较常见,而且多会配合 __FILE__ 、 __DIR__ 之类的魔术常量使用。
basename() 函数是获得路径中的文件名,它有两个参数,第一个是文件的路径,第二个是过滤掉的内容,比如第一条测试语句我们过滤掉文件的后缀名。
dirname() 返回的是路径中的路径部分,也就是不包含文件名的那部分内容,和 basename() 正好是相反的功能。
pathinfo() 函数用于以数组的形式返回路径中的信息,从结果来看,我们可以看到文件的 dirname 部分,basename 部分,以及文件的扩展名 extension 和不包含扩展名的 filename 内容。
realpath() 返回的是规范化的绝对路径名,它扩展所有的符号连接并且处理输入的路径中的 ./ 、 ../ 以及多余的 / ,返回的内容是标准规范的绝对路径。
接下来,我们学习一些修改文件相关属性的函数,主要就是在 Linux 系统环境中的文件权限信息的操作。
当然,首先我们得创建一个文件。和 Linux 中的命令是非常类似的。
touch() 函数除了给出要创建的文件名之外,还有两个可选参数可以指定文件的创建时间及访问时间,不给参数的话默认就是当前时间。这个文件名可以是相对或绝对路径中有权限的目录,并在该目录下创建一个空的文件。
通过 fileowner() 函数,我们可以获得某个文件所属的用户,默认情况下我们的用户是当前运行 PHP 脚本的用户,也就是系统目前的登录用户。在这里,我们使用 chown() 函数,将用户改为 www 用户。clearstatcache() 是用于清理文件系统的缓存信息,如果不清理一下的话,fileowner() 返回的依然还是之前的用户信息。
同理,使用 filegroup() 函数获得文件的属组信息,chgrp() 用于修改文件的属组。fileperms() 用于返回文件的权限信息,它返回的是数字模式的文件访问权限,这里我们使用 sprintf() 格式化结果后获得我们常用的 Linux 系统权限格式。chmod() 函数用于修改文件的权限,它的权限参数是三个 8 进制数据组成的数字,也就是代表 Linux 系统中的 1 、2 、4 和它们的组合,所以我们需要在前面再加上一个 0 用于确保操作能够正常执行。关于系统文件权限的知识大家需要认真学习 Linux 系统中相关的内容。
注意,上述函数如果在命令行中运行失败,大部分原因是没有权限,可以使用 sudo 进行测试。在 fastcgi 中运行时,就更加需要注意权限问题,仅在我们服务器可以操作的目录中进行安全的文件权限修改。
stat() 函数可以获取到指定文件的所有属性信息,在这里我们可以看到文件的 uid 、 gid 、 ctime 、 mtime 等信息。
在 Linux 系统中,有软连接和硬连接的相关知识。其实软连接就像是 Windows 中的快捷方式,而硬连接相关于复制了一份数据。在 PHP 中,也为我们提供了创建软硬连接以及相关的一些操作。
使用 link() 函数创建的就是一个指定文件的硬连接文件,而使用 symlink() 创建的则是一个软连接文件。相对来说,我们使用软连接的场景会更多一些。lstat() 就和 stat() 函数的功能一样,查看文件的各种属性信息,不过 lstat() 函数针对的是软硬连接文件。
同样地,我们也可以修改软硬连接的用户和用户组信息,不过它们的信息不能通过 fileowner() 或 filegroup() 查看。因为它们是连接文件,本身还是和原始文件绑定在一起的,使用 fileowner() 这类的函数查看到的依然是原始文件的信息。我们可以在系统环境中使用 ls -l 查看连接文件的用户和用户组信息是否修改成功。
今天的内容比较简单,而且修改权限的操作也并不常用。不过对于系统安全来,它们还是非常有用的,比如对于上传来说,我们要预防上传可执行文件的话,就可以通过修改文件的权限来让文件无法直接运行,从而起到安全保护的作用。另外,目录路径相关的操作也是一些框架的基础,几乎所有框架的入口或者说是 Composer 的入口,都会见到 dirname() 以及 basename() 之类函数的身影。
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/6.PHP中的文件系统函数(一).php
参考文档:
https://www.php.net/manual/zh/ref.filesystem.php
C. 怎么把网页首页index.php进行保护
网络安全是网站所有者和用户最关心的网络问题。近年来,影响各大银行、零售商和其他领先服务供应商的大规模数据泄露事件成为全世界的头条新闻,并使用户比以往更加担心他们在各种在线交易过程中所分享的敏感个人数据的安全性。向用户放心,保证他们的其数据不会受到黑客攻击、身份盗窃和其他类型的在线犯罪的侵害,这对于保持客户信任至关重要。
如何保护网站的安全?
使用SSL和HTTPS协议保护网站安全是保护在业务过程中收集的敏感数据和向用户发出网站安全的信号的基本步骤。如果网站以任何方式收集或使用敏感数据,了解这两种协议如何工作以及如何使用它们来保护您的网站和客户免受最新一轮网络攻击是很重要的。
SSL是什么?
SSL指的是安全套接字层——一种通过加密和身份验证在网络浏览器和服务器之间传输数据时添加密钥的小型数据文件。要为商业或专业网站配置SSL加密,站点所有者必须获得SSL证书,该证书充当向用户宣布网站已由第三方认证机构验证和认证的标记。SSL的一个更安全的选择是TLS(传输层安全性),站点所有者还可以请求对该证书进行验证。
并非所有网站都需要SSL证书,但拥有SSL证书对于保护敏感和机密的用户数据(如支付信息、网站订阅或注册数据——如电子邮件地址或用户名和密码,以及文件——如健康记录或纳税申报表)是必不可少的。
SSL或TLS证书为浏览器和服务器之间传递的任何通信增加了额外的网站安全层。证书存放在服务器中,访问带有HTTPS的网站时都可以访问。网站所有者可以从三种不同类型的SSL证书中进行选择,这取决于站点的性质以及它从用户收集的信息种类。
通过域验证(DV)验证的证书是最低和最不安全的身份验证形式。对于这类证书,认证机构只需检查申请人是否是域名的所有者。并不会检查有关该公司或申请人的其他信息。只进行域验证的证书通常可以快速而相对便宜地授予,因为几乎没有要验证的信息。DV认证只适用于对机密信息处理最少,而较少关心如何建立可靠的安全交易信誉的网站。
通过组织验证(OV)验证的证书提供了比DV证书更彻底的验证。这种SSL证书不仅验证域所有权,而且还验证有关公司所有权和任何相关文件的详细信息。网站访问者也可以获得这一信息,这可以提高网站的透明度和可信度。OV证书比DV证书需要更多的时间,但它为处理低级数据的网站提供了额外的网站安全性,例如为营销目的收集电子邮件地址。
通过扩展验证(EV)验证的证书提供了最高级别的身份验证和安全性。这些证书只能由经授权的认证机构签发,并要求对详细的公司信息进行审查。由于EV证书是时间密集型的,并且代表着最高级别的安全性,所以它们是三种证书中最昂贵的,最最适合处理非常机密信息(如信用卡数据)的网站。
SSL证书安装在服务器上,访问者到达具有标记为安全的HTTPS名称的站点之后就会激活SSL证书。主机提供商可以为其客户安装证书,并且许多提供商允许用户直接通过他们的主机帐户来申请证书。必须正确配置虚拟服务器以接受证书,并且该过程通常由主机服务处理。
什么是HTTPS?
几乎所有花时间上网的人都遇到过字母HTTP,它通常出现在每个URL的开头。HTTP(超文本传输协议)是一种通用的、基于文本的协议,它允许客户机(硬件或软件的各个部分)连接到服务器上并检索数据以供显示。HTTP是一个不安全的协议,这意味着在客户机和虚拟服务器之间传输的数据可能容易受到黑客攻击、网络钓鱼和其他类型的网络威胁。
HTTPS改变了这一形式。该协议代表“超文本传输协议安全”,它告诉所有潜在的站点访问者,协议在客户机和服务器之间传输数据时带有额外的安全层。与SSL证书类似,一个带有HTTPS协议而不是HTTP的网站告诉用户,在站点和浏览器之间传输的数据是加密的,是安全的。HTTPS协议与SSL证书一起工作。访问者访问HTTPS站点时,将激活证书并触发对传输数据的加密。
与附加在网站URL上的HTTPS协议一起,简单的可视化提示可以告诉访问者站点是否使用SSL证书进行了加密。由OV和DV证书验证过的站点在HTTPS旁边有一个绿色挂锁,显示为绿色。拥有最安全EV证书的网站还可以包括一个绿色搜索栏。挂锁图标还可以告诉用户关于站点证书状态的信息。挂锁图标也可以用于传递其他消息。例如,黄色挂锁表明之前颁发的SSL证书已损坏。
可以从一开始就用HTTPS协议和SSL证书配置新网站,也可以重新配置或转换现有网站以支持这些附加的安全特性。但是,以这种方式将现有网站转换为更安全的版本可能会产生一些意想不到的问题,因为搜索引擎可能将具有HTTP的网站和具有HTTPS的网站识别为两个不同的网站。
为了避免由于HTTP和HTTPS站点的存在而引起的问题,专家建议花时间来调整所有可能受切换影响的帐户和其他活动。这可以包括重新配置网站的所有内容,包括插件、分析或广告,并设置正确的重定向,以确保客户能够进入正确的网站。切换到HTTPS还可以影响旧HTTP站点上的现有链接。
在一个窃取或破坏用户数据的黑客手段日益复杂的时代,SSL证书和HTTPS协议告诉访问者站点是值得信赖的,安全的,他们最敏感的数据在网站上是安全的。为了进一步阻止黑客的攻击,您还可以下载安全插件来保护网站。(源自:美国主机-BlueHost)