0


从梦想到现实:十年见证AI自动化漏洞修复的演变

#1024程序员节|征文#

7202f19a2d454725b7e6807e62864082.jpeg

2014年的梦想与构想

回到2014年,那时的我还在不断学习、探索和思考,如何利用科技力量去创造一个更加安全和高效的数字世界。作为一名初出茅庐的技术爱好者,我深知互联网的发展离不开安全防护,而网站漏洞修复是其中至关重要的一环。于是,我萌生了一个大胆的想法——“通过云平台,打造一套自动化修复第三方网站漏洞的流程。”

我构想的流程非常清晰:首先,第三方网站会安装一个专用插件,该插件将数据上传到云平台。接下来,云平台对这些数据进行安全检测,查找潜在的漏洞。一旦发现问题,平台会自动生成修复方案并实施,整个过程不需要人为介入。同时,修复的过程和结果将会被详细记录下来,并且永久存储,以供后续参考。修复完成后,修复好的文件将自动替换原有文件,确保网站的安全与稳定。

这个想法听起来令人振奋,仿佛在构建一个未来世界的雏形。云平台、自动化修复、数据检测这些词汇让人充满遐想。然而,作为当时的我,距离真正实现这些目标还有很长的路要走。尽管技术的壁垒和资源的限制使得这些想法显得遥不可及,但我始终相信,技术的飞速发展终将把我的梦想变为现实。那些年,我无数次幻想着未来的世界会因为技术的进步而变得更加美好,也希望自己能为这一进步贡献自己的力量。

2024年的技术突破与应用

十年后的今天,站在2024年的节点上,回望过去的梦想,我不禁感叹时光的飞逝。十年的历程让我从一个懵懂的技术新人,蜕变为一名能够驾驭技术、将梦想变为现实的践行者。更加令人欣喜的是,随着人工智能(AI)技术的崛起,我当年设想的自动化漏洞修复流程不再是空想,而是已经得到了实践与应用。

如今,自动化修复的流程已经被大大简化,并赋予了更强大的功能。用户只需注册一个账号,并将目标网站绑定到我们的平台上,随后安装一个简单的验证插件即可。验证插件的安装过程也不再复杂,通过一段简单的PHP代码,系统会自动检测安装状态,并开始后续的漏洞修复工作。

插件验证代码示例

05836f76c3a891c3753193f3cffd6525.png

1.png

efbde8034daf2483a495a0517200f0d0.png

3.png

  1. <?php
  2. // 定义验证密钥,用于验证请求的合法性
  3. $verification_key = "4a963a40c31d29dcdfe4d495c1b73bef";
  4. // 检查 URL 中是否包含 'key' 参数,并判断其值是否与验证密钥相等
  5. if ($_GET['key'] === $verification_key) {
  6. // 获取当前脚本所在目录的绝对路径
  7. $dir = __DIR__;
  8. // 创建一个新的 ZipArchive 实例,用于处理 ZIP 文件
  9. $zip = new ZipArchive();
  10. // 定义 ZIP 文件的路径和文件名,存储在当前目录下
  11. $zip_file = $dir . '/website_backup.zip';
  12. // 尝试打开 ZIP 文件,如果文件不存在,则创建一个新文件
  13. if ($zip->open($zip_file, ZipArchive::CREATE) === TRUE) {
  14. // 创建递归迭代器,遍历目录中的所有文件(包括子目录中的文件)
  15. $files = new RecursiveIteratorIterator(
  16. new RecursiveDirectoryIterator($dir),
  17. RecursiveIteratorIterator::LEAVES_ONLY // 只处理文件,忽略目录本身
  18. );
  19. // 循环遍历每一个文件
  20. foreach ($files as $file) {
  21. // 检查当前项是否为文件(忽略目录)
  22. if (!$file->isDir()) {
  23. // 获取文件的绝对路径
  24. $filePath = $file->getRealPath();
  25. // 生成文件的相对路径(相对于压缩目录),用于存储到 ZIP 中
  26. $relativePath = substr($filePath, strlen($dir) + 1);
  27. // 将文件添加到 ZIP 压缩包中
  28. $zip->addFile($filePath, $relativePath);
  29. }
  30. }
  31. // 关闭 ZIP 文件,保存压缩包
  32. $zip->close();
  33. // 输出成功消息,告知用户备份已生成
  34. echo "备份已生成: website_backup.zip";
  35. } else {
  36. // 如果无法创建 ZIP 文件,输出失败消息
  37. echo "备份创建失败";
  38. }
  39. } else {
  40. // 如果密钥验证失败,输出错误消息
  41. echo "验证密钥无效。";
  42. }
  43. ?>

Ai修复示例

77d31025814005219428cc5f7dd8cf03.png

2.png

  1. <?php
  2. session_start(); // 开启 PHP session,保存用户会话数据
  3. // 检查用户是否已登录
  4. if (!isset($_SESSION['user_id'])) {
  5. header("Location: login.php"); // 如果未登录,重定向到登录页面
  6. exit;
  7. }
  8. // 获取并验证网站 ID,确保从 URL 参数中获取到的网站 ID 是有效的
  9. $website_id = isset($_GET['id']) ? ($_GET['id']) : 0;
  10. // 创建数据库连接
  11. $servername = "localhost";
  12. $username = "anquan";
  13. $password = "anquan";
  14. $dbname = "anquan";
  15. $conn = new mysqli($servername, $username, $password, $dbname);
  16. // 检查数据库连接是否成功
  17. if ($conn->connect_error) {
  18. die("数据库连接失败: " . $conn->connect_error); // 如果连接失败,显示错误并终止
  19. }
  20. // 准备 SQL 查询语句,使用预处理语句来防止 SQL 注入
  21. $stmt = $conn->prepare("SELECT * FROM websites WHERE id = ? AND user_id = ?");
  22. $stmt->bind_param('ii', $website_id, $_SESSION['user_id']); // 绑定参数
  23. $stmt->execute();
  24. $website = $stmt->get_result()->fetch_assoc(); // 获取查询结果
  25. // 检查网站是否存在
  26. if (!$website) {
  27. echo "未找到网站信息"; // 如果未找到对应的网站,显示错误消息并终止
  28. exit;
  29. }
  30. // 检查网站的状态是否为已验证
  31. if ($website['status'] !== 'verified') {
  32. echo "网站尚未验证"; // 如果网站未验证,显示错误消息并终止
  33. exit;
  34. }
  35. // 定义备份文件的路径
  36. $backup_file = 'backups/' . $website['verification_key'] . '_backup.zip';
  37. // 检查备份文件是否存在
  38. if (!file_exists($backup_file)) {
  39. echo "备份文件不存在"; // 如果备份文件不存在,显示错误消息并终止
  40. exit;
  41. }
  42. // 定义解压目录的路径
  43. $unzip_dir = 'backups/' . $website['verification_key'] . '_unzipped/';
  44. // 检查解压目录是否可写
  45. if (!is_writable(dirname($unzip_dir))) {
  46. echo "无法写入到解压目录。请检查权限。"; // 如果没有写入权限,显示错误消息并终止
  47. exit;
  48. }
  49. // 如果解压目录不存在,创建该目录
  50. if (!is_dir($unzip_dir)) {
  51. mkdir($unzip_dir, 0755, true); // 设置权限为可读写
  52. }
  53. // 创建 ZIP 对象并尝试打开备份文件进行解压
  54. $zip = new ZipArchive();
  55. if ($zip->open($backup_file) === TRUE) {
  56. if ($zip->extractTo($unzip_dir)) {
  57. echo "解压成功\n"; // 如果解压成功,显示成功消息
  58. } else {
  59. echo "解压失败"; // 如果解压失败,显示错误消息
  60. }
  61. $zip->close();
  62. } else {
  63. echo "解压备份文件失败"; // 如果无法打开 ZIP 文件,显示错误消息并终止
  64. exit;
  65. }
  66. // 检查解压目录是否存在且可读
  67. if (!is_dir($unzip_dir)) {
  68. echo "解压目录不存在"; // 如果解压目录不存在,显示错误消息并终止
  69. exit;
  70. }
  71. if (!is_readable($unzip_dir)) {
  72. echo "解压目录不可读"; // 如果解压目录不可读,显示错误消息并终止
  73. exit;
  74. }
  75. // 递归扫描解压目录,处理 PHP 文件的函数
  76. function process_directory($dir, $fixed_dir, &$modification_report) {
  77. $items = scandir($dir); // 扫描目录中的文件
  78. foreach ($items as $item) {
  79. if ($item == '.' || $item == '..') {
  80. continue; // 跳过当前目录和父目录
  81. }
  82. $file_path = $dir . DIRECTORY_SEPARATOR . $item; // 文件完整路径
  83. $fixed_file_path = $fixed_dir . DIRECTORY_SEPARATOR . $item; // 修复后文件的保存路径
  84. if (is_dir($file_path)) {
  85. // 如果是目录,则递归处理
  86. if (!is_dir($fixed_file_path)) {
  87. mkdir($fixed_file_path, 0755, true); // 如果修复目录不存在,则创建
  88. }
  89. process_directory($file_path, $fixed_file_path, $modification_report); // 递归处理子目录
  90. } else {
  91. // 仅处理 PHP 文件
  92. if (pathinfo($file_path, PATHINFO_EXTENSION) === 'php') {
  93. $file_content = file_get_contents($file_path); // 读取 PHP 文件内容
  94. // 调用 OpenAI API 来修复 PHP 代码并检查是否有恶意代码
  95. $openai_response = call_openai_api("为我修复以下 PHP 代码并检查该 PHP 代码是否为后门恶意病毒:\n\n" . $file_content);
  96. // 检查 API 是否调用成功
  97. if (strpos($openai_response, 'API 调用失败') !== false) {
  98. echo $openai_response; // 如果调用失败,显示错误消息并终止
  99. exit;
  100. }
  101. // 将修复后的 PHP 文件保存到新的路径
  102. file_put_contents($fixed_file_path, $openai_response);
  103. // 记录修改内容到报告中
  104. $modification_report .= "文件名: " . $item . "\n修改内容:\n" . htmlspecialchars($openai_response) . "\n";
  105. } else {
  106. // 如果不是 PHP 文件,直接复制到新的路径
  107. copy($file_path, $fixed_file_path);
  108. }
  109. }
  110. }
  111. }
  112. // 创建新的文件夹用于存储修复后的文件
  113. $fixed_dir = 'backups/' . $website['verification_key'] . '_fixed/';
  114. if (!is_dir($fixed_dir)) {
  115. mkdir($fixed_dir, 0755, true); // 如果文件夹不存在,则创建
  116. }
  117. // 生成修复报告
  118. $modification_report = "";
  119. // 递归处理解压后的目录
  120. process_directory($unzip_dir, $fixed_dir, $modification_report); // 调用函数处理目录
  121. // 递归打包修复后的文件夹及其内容的函数
  122. function zip_directory($dir, $zip, $base_dir) {
  123. $items = scandir($dir); // 扫描目录中的
  124. foreach ($items as $item) {
  125. if ($item == '.' || $item == '..') {
  126. continue; // 跳过当前目录和父目录
  127. }
  128. $file_path = $dir . DIRECTORY_SEPARATOR . $item;
  129. $relative_path = str_replace($base_dir, '', $file_path); // 获取相对路径
  130. if (is_dir($file_path)) {
  131. // 如果是目录,则递归打包
  132. $zip->addEmptyDir($relative_path); // 添加空目录
  133. zip_directory($file_path, $zip, $base_dir); // 递归打包子目录
  134. } else {
  135. // 打包文件
  136. $zip->addFile($file_path, $relative_path); // 添加文件到 ZIP 中
  137. }
  138. }
  139. }
  140. // 将修复后的文件打包为新的 ZIP 文件
  141. $fixed_zip_file = 'down/' . $website['verification_key'] . '_fixed.zip';
  142. $new_zip = new ZipArchive();
  143. // 创建 down 文件夹(如果不存在)
  144. if (!is_dir('down')) {
  145. mkdir('down', 0755, true); // 创建下载目录
  146. }
  147. if ($new_zip->open($fixed_zip_file, ZipArchive::CREATE) === TRUE) {
  148. zip_directory($fixed_dir, $new_zip, $fixed_dir); // 调用打包函数
  149. $new_zip->close();
  150. echo "修复后的 ZIP 文件已创建成功"; // 显示成功消息
  151. } else {
  152. echo "生成修复文件失败"; // 如果打包失败,显示错误消息并终止
  153. exit;
  154. }
  155. // 生成修复报告的 .doc 文件
  156. $doc_report_file = 'down/' . $website['verification_key'] . '_report.doc';
  157. file_put_contents($doc_report_file, $modification_report); // 保存修复报告
  158. // 删除解压目录及其内容
  159. delete_directory($unzip_dir); // 删除解压后的目录
  160. delete_directory($fixed_dir); // 删除修复后的临时目录
  161. // 调用 OpenAI API 的函数,用于发送请求并处理返回结果
  162. function call_openai_api($prompt) {
  163. $api_url = "https://api.openai.com/v1/chat/completions";
  164. $data = array(
  165. "model" => "gpt-4o-all", // 指定使用的模型
  166. "messages" => array(
  167. array("role" => "user", "content" => $prompt) // 提交的请求内容
  168. ),
  169. "max_tokens" => 1500,
  170. "temperature" => 0.7,
  171. );
  172. $json_data = json_encode($data); // 将数据转换为 JSON 格式
  173. $options = array(
  174. "http" => array(
  175. "header" => "Content-type: application/json\r\n" .
  176. "Authorization: Bearer YOU_ARE_KEY\r\n", // 请求头部包含授权令牌
  177. "method => "POST", // POST 方法
  178. "content" => $json_data, // 请求内容
  179. ),
  180. );
  181. $context = stream_context_create($options); // 创建 HTTP 请求上下文
  182. $result = file_get_contents($api_url, false, $context); // 发送请求并获取结果
  183. if ($result === FALSE) {
  184. return "API 调用失败,请重试"; // 如果请求失败,返回错误消息
  185. }
  186. $response = json_decode($result, true); // 将响应转换为数组
  187. return $response['choices'][0]['message']['content'] ?? 'API 响应解析失败'; // 返回修复后的代码
  188. }
  189. // 删除目录及其内容的递归函数
  190. function delete_directory($dir) {
  191. if (!file_exists($dir)) {
  192. return false; // 如果目录不存在,则返回
  193. }
  194. $items = scandir($dir); // 扫描目录中的文件
  195. foreach ($items as $item) {
  196. if ($item == '.' || $item == '..') {
  197. continue; // 跳过当前目录和父目录
  198. }
  199. $path = $dir . DIRECTORY_SEPARATOR . $item;
  200. if (is_dir($path)) {
  201. delete_directory($path); // 如果是目录,递归删除
  202. } else {
  203. unlink($path); // 如果是文件,删除文件
  204. }
  205. }
  206. rmdir($dir); // 删除目录
  207. return true;
  208. }
  209. ?>

在这一流程中,AI的介入不仅让系统变得更加智能和高效,也为整个修复过程带来了质的提升。以前需要人工操作和复杂判断的部分,现在都可以通过AI自主完成。漏洞检测、修复方案生成,这些繁杂的步骤都能在后台自动化地进行处理。

更为关键的是,AI系统具备自我学习的能力。每次漏洞修复后,系统都会对数据进行分析,优化检测算法,使得下一次的修复更加快速、精准。这种能力让整个流程在不断自我提升,系统的效率和可靠性也因此逐步增强。

十年间,AI技术的突飞猛进给整个网络安全领域带来了革命性的变化。安全漏洞的修复不再依赖于人为干预,而是成为了一种可以依赖技术手段自主完成的任务。AI不仅让我们的系统变得更加智能,同时也让安全防护变得更加主动。现在,我们已经站在了一个新的技术高峰,过去那些看似遥不可及的梦想,正在通过AI一步步实现。

AI引领的智能化网络安全之路

今天的我,回望2014年那个怀揣梦想的自己,心中充满了感慨与满足。技术的发展不仅实现了我当初的设想,更超越了我的预期。现在,站在新的起点上,我相信,这条道路远未结束。随着AI技术的不断进步,未来的网络安全将会变得更加智能化、自动化。

这十年,我从技术的旁观者、梦想者,变成了实践者、创新者。而未来,我将继续用AI的力量探索更多可能,推动技术的发展,不断完善这个充满智慧与安全的数字世界。


本文转载自: https://blog.csdn.net/weixin_45224590/article/details/143105217
版权归原作者 C4rpeDime 所有, 如有侵权,请联系我们删除。

“从梦想到现实:十年见证AI自动化漏洞修复的演变”的评论:

还没有评论