源代码被添加后门之后-PHP的用户数据库可能已被入侵 (源代码被添加怎么解决)

教程大全 2025-07-09 03:13:36 浏览

在最新的软件供应链攻击中,PHP官方Git仓库被黑客攻击,代码库被篡改。近日,PHP维护人员表示黑客可能已经拥有了包含密码的用户数据库。

3月28日,攻击者使用PHP的作者Rasmus Lerdorf和Jetbrains开发者Nikita Popov的账号,向git.php.Net 服务器 上的 php-src 存储库推送了两次恶意提交。

用户数据库可能已被入侵

此次事件最初被视为git.php.net服务器的泄露。但对事件进行进一步调查发现,这些提交是使用HTTPS和基于密码的认证推送的结果,这让研究人员怀疑master.php.net用户数据库可能存在泄露。

同时,研究人员还发现黑客需要对用户名进行几次猜测,一旦找到正确的用户名,就会成功认证。但如果数据库已经泄露,为什么黑客还需要进行猜测呢?目前,研究人员还没有找到原因。

此外,据说master.php.net认证系统使用的是非常老的操作系统和PHP的版本,这就使得攻击者也有可能利用软件的漏洞来发动攻击。

因此,维护者已经将master.php.net迁移到新的main.php.net系统中,并支持TLS 1.2。此外,维护者还重置了所有现有的密码,并使用bcrypt而不是普通的MD5哈希存储密码。

事件回顾

PHP Git服务器被植入RCE后门

PHP是一种开源的计算机脚本语言,为互联网上超过79%的网站提供动力。因此,事件一经曝光被引起了强烈关注。

负责人Popov在公告中表示,他们目前还不知道事件是怎样发生的,但是此次事件导致的后果是git.php.net服务器的数据泄露而不是简单的单个账号的泄露。

官方公告

经观察,在两个恶意提交中,攻击者在上游发布了一个假装成修正文字输入错误的神秘修改。

攻击者以Rasmus Lerdorf的身份签署的恶意提交(非法)植入远程代码执行后门

然而,仔细检查一下新增的第370行调用zend_eval_string函数的地方,可以发现,这段代码实际上是为运行被劫持的PHP版本的网站植入了一个后门,以获得轻松的远程代码执行(RCE)。

PHP的开发者表示,如果字符串以’zerodium’开头,这一行就会从useragent HTTP头内执行PHP代码。

此外,恶意代码中包含了一条注解 “REMOVETHIS: sold to zerodium, mid 2017”。值得注意的是,Zerodium是一家知名的零日漏洞经纪商,而注释的意思是“漏洞在2017年中出售给了zerodium”。对此,而Zerodium的CEO Chaouki Bekrar认为攻击者很可能试图出售这个漏洞,但找不到卖家,所以攻击者干脆自己恶搞。

不过,PHP相关负责人表示,恶意提交几小时后,就被他们在进行常规的代码审查时发现。这些更改的恶意很明显,所以很快被还原了。

对于Git这样的源代码版本控制系统来说,这样的事件会发生很正常。因为可以把提交的内容为打上本地任何一个人的签名,然后再把伪造的提交内容上传到Git服务器上。这样一来,就会让人觉得这个提交确实是由签名的人提交的。

PHP官方代码库迁移到GitHub

作为此次事件后的预防措施,PHP维护人员决定将PHP官方源码库迁移至GitHub。

他们表示,虽然调查还在继续,但为了减少自己的Git基础设施所面对的风险,他们决定关闭git.php.net的服务器。原本只是镜像的GitHub上的存储库,之后将成为正式服务器。

并且,从现在开始,任何修改都要直接推送到GitHub上而不是原先的服务器。

那些想要帮助PHP的人可以申请在GitHub上被添加为PHP组织的一部分。不过,如果要成为该组织的一员,先要在自己的GitHub账户上开启双因素认证。

目前,PHP还在检查除了那两个恶意提交外的威胁,并且检查是否有任何代码再恶意提交被发现之前被分发到下游。

来源:bleepingcomputer


java代码编译器EditPlus,怎样设置一段默认的JAVA代码!

工具集成——编译器集成例子(Java、Borland C++、Visual C++、Inno Setup、nsis) 在“工具→参数选择→用户工具”选项页设置,设置步骤 ① 设置组名称,这里也可以不设置 ② 单击“添加工具→应用程序”按钮并进行如下设置 ③ 各种类似$(FilePath)的参数可以在文本框右侧的箭头下拉菜单中获取,具体含义如下 参数 描述 $(FilePath) 文件路径(文件全名,含目录和文件名) $(FileDir) 文件目录(不带文件名) $(FileName) 文件名(不带目录) $(FileNameNoExt) 不带扩展名的文件名(不带目录) $(FileExt) 扩展名(当前文件) $(ProjectName) 工程名称(当前工程名) $(CurLine) 当前行号(光标位置处的行号) $(CurCol) 当前列号(光标位置处的列号) $(CurSel) 当前文本(插入当前选定文本) $(CurWord) 当前单词(插入当前单词) $(WindowList) 显示当前窗口列表并选择特定文件 例子 1. Java 编译器 菜单文本:Java 编译器 命令:c:\\java\\bin\\ 参数:$(FilePath) 初始目录:$(FileDir) 捕获输出:开启 要运行已编译的 Java 类文件,你可以进行如下设置: 菜单文本:Java 命令:c:\\java\\bin\\ 参数:$(FileNameNoExt) 初始目录:$(FileDir) “命令”部分应当替换为实际的 Java 解释器的路径。 例子 2. Borland C++ 菜单文本:Borland C 命令:c:\\bc\\bin\\ 参数:-Ic:\\bc\\include -Lc:\\bc\\lib -n$(FileDir) $(FilePath) 初始目录:c:\\bc\\bin 捕获输出:开启 例子 3. Visual C++ 菜单文本:Visual C++ 命令:c:\\msdev\\vc98\\bin\\ 参数:$(FilePath) 初始目录:$(FileDir) 捕获输出:开启 例子 4. Inno Setup 菜单文本:编译 Inno 命令:C:\\Program Files\\Inno Setup 4\\” 参数:/cc $(FileName) 初始目录:$(FileDir) 捕获输出:开启 例子 5. nsis 菜单文本:编译 nsis 命令:C:\\NSIS\\ 参数:$(FileName) 初始目录:$(FileDir) 捕获输出:开启 例子 6. C# 菜单文本:编译 C# 命令:C:\\windows\\\\Framework\\v1.0.3705\\ 参数:$(FileName) 初始目录:$(FileDir) 捕获输出:开启 在上面设置中,在命令部分,必须使用系统中各自编译器的绝对路径。 设置完毕后,你可以在“工具”菜单运行对应工具了,运行结果会显示在底部的输出窗口,你也可以通过快捷键(Ctrl + 0-9) 运行,或者是通过“用户工具栏”的快捷按钮运行。 要运行已编译的 * 文件,你可以进行如下设置(此时可执行文件需要和编译文件同名): 菜单文本:Run 命令:$(FileNameNoExt) 参数: 初始目录:$(FileDir)

EditPlus挂接Vc6.0

工具/ 配置工具/

弹出参数选择窗口,“组名称”改为Debug c/c++,“添加工具”添加如下两个“应用程序”:

菜单文本:编译

命令:E:\Program Files\Microsoft Visual Studio\VC98\Bin\

参数:$(FilePath)

起始目录:$(FileDir)

源代码被添加后门之后

捕获输出:打勾

菜单文本:运行

命令:$(FileNameNoExt)

参数:

起始目录:$(FileDir)

3、(可选)免得每次修改后都要先编译再执行。 利用批处理来执行1和2中的命令。

菜单文本:编译运行

命令:E:\Program Files\Microsoft Visual Studio\VC98\Bin\

参数:$(FileNameNoExt)

起始目录:$(FileDir)

文件内容如下:

if exist %1.c % exist % %%

EditPlus对Java编译设置。

在配置EditPlus之前是先将Java的运行环境安装且调试好,然后进入EditPlus,从菜单“工具(Tools)“:”配置用户工具……“进入用户工具设置,选择”组和工具条目“中的”Group 1“,点击面板右边的“组名称……”按钮,将文本Group1“修改成”Java编译程序“,点击”添加工具“按钮,选择应用程序,

然后就是修改属性:

1. 添加编译功能“菜单文本”里的内容修改为“Javac”;

“命令”选择安装JDK后的Bin目录中的编译程序,我的JDK 安装路径为“C:Program FilesJDKj2sdk1.4.2_08“,那么此路径为”C:Program “;

“参数”选择“文件名”,即显示为“$(FileName)”;

“初始目录”选择“文件目录”,显示为“$(FileDir)”;选择“捕获输出”复选框

2. 添加执行功能“菜单文本”里的内容修改为“Java”;

“命令”选择安装JDK后的BIN目录中的编译程序,路径为“C:Program ”;

“参数”选择“不带扩展名的文件名”,即显示为“$(FileNameNoExt)”;

“初始目录”选择“文件目录”,显示为“$(FileDir)”;千万不用选择“捕获输出”复选框!不然不会弹出命令控制台!

这样就完成了EditPlus的基本设置,可以写一段Java程序进行调试,通过Ctrl+1进行编译,使用Ctrl+2运行程序,错误提示都会显示在输出窗口中,双击某一行错误信息,EditPlus会自动定位到出错行,怎么样?一个简单的Java IDE界面就出现了。

ps: 要把你写的。 java代码保存到你的java文件夹里才行。

以上全部是转贴。 。 。 。 只有对JAVA的配置是自己实验过的。 。 。

近期可能要用到C++,需要的话配置好后再加上

python 使用logging,生成的log文件是什么编码格式?脚本的编码格式决定?系统的编码格式决定?

log的文件当然是byte格式。 或者是无格式的。 汉字编码取决于你自己设定的类型。 #coding:utf-8这个东西,只在python2下有效果。 还需要编程器配合。 你使用python自带的idle当然是没有问题的。 log中的汉字是一定要编码的。 不编码你存贮不了。 编辑器本身的缺省编码格式要与你的源代码编码一致,不然看到的就是乱码。 如果是idle,它会根据python脚本自动识别。 不过有些编辑器是有些不智能的。 它不能理解python脚本第一行的提示。 所以有时候,觉着很别扭自己要手工保持编辑器的编码与源码一致。 还需要维护那个coding:utf-8不过python3已将这一句去掉了。 源代码全部要求使用utf-8编码(也许是utf-16),我很少用python3

给定java程序User.java,代码如下:

c 或者 d 结果都对

如果只能选一个 建议 d

原因:c的范围 为Application太大 浪费资源

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐