Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要清理垃圾邮件数据库_Php_Mysql_Database - Fatal编程技术网

Php 需要清理垃圾邮件数据库

Php 需要清理垃圾邮件数据库,php,mysql,database,Php,Mysql,Database,所以有几件事。首先,我生病了,我似乎不能集中精力像我应该的那样解决这个问题,其次,它让我在如何处理这个问题上陷入困境 所以我有一个客户,他有一个基于旧代码构建的旧站点。代码中存在一些允许注入和攻击的极端漏洞——这已经发生了。自从我加入这个项目以来,我已经把事情做得相当紧凑了,并没有真正的问题。但我刚刚发现了一些以前的黑客攻击中遗留下来的问题 因此,在数据库中,他们有一个名为“copy”的字段,用于存储文章的内容。好吧,不是最好的名字,但它就在那里。这就是问题所在。自黑客攻击以来,大约有52k行中

所以有几件事。首先,我生病了,我似乎不能集中精力像我应该的那样解决这个问题,其次,它让我在如何处理这个问题上陷入困境

所以我有一个客户,他有一个基于旧代码构建的旧站点。代码中存在一些允许注入和攻击的极端漏洞——这已经发生了。自从我加入这个项目以来,我已经把事情做得相当紧凑了,并没有真正的问题。但我刚刚发现了一些以前的黑客攻击中遗留下来的问题

因此,在数据库中,他们有一个名为“copy”的字段,用于存储文章的内容。好吧,不是最好的名字,但它就在那里。这就是问题所在。自黑客攻击以来,大约有52k行中有“伟哥”一词。因此,当我仔细查看视图源中的复制字段和代码时,我发现:

for the little kids in the neighborhood.<div style="display: none;">
给附近的小孩。
基本上,打开和关闭的div标记具有如上所示的样式集。因此,它不会在页面上直观地呈现,但当您查看源代码或。。。“搜索引擎蜘蛛”来了,他们看到了。我一辈子都搞不明白为什么上传到article_image目录中的.php文件会在网站管理员工具中被编入索引,直到今晚。现在我知道为什么了

这就是我需要的。因为数据库中的每一行(52k行)都有一个示例(代码)部分,它们都出现在最初的内容之后,所以我需要一些可以添加到循环中的内容,以清除复制字段中的垃圾,从而清除混乱。我可以采用stru_替换方法,但这太长了,不能保证我能得到所有的东西

那么-有什么建议吗?

试试这个:(假设“content”是包含文章内容的列的名称)

更新`copy`SET`内容`=
SUBSTR(`content`)从1开始表示LOCATE(`content`)
其中“content”类似于“%”;
因为您已经指出,这些注入总是文章中的最后一件事,这将很好地消除它们。不过,我强烈建议先备份一份

试试这个:(假设“content”是包含文章内容的列的名称)

更新`copy`SET`内容`=
SUBSTR(`content`)从1开始表示LOCATE(`content`)
其中“content”类似于“%”;

因为您已经指出,这些注入总是文章中的最后一件事,这将很好地消除它们。不过,我强烈建议先备份一份

问题-它会在第一次找到后替换任何内容吗?还是需要更具体地获得“全部”?它会从隐藏的
开始切断所有内容。我假设在文章的合法部分没有隐藏的
元素。这会不会消除不包含
div
的文章的内容
LOCATE
返回
0
如果找不到字符串…我应该能够在该语句中添加一个and article_id<'10',以确保不会破坏整个数据库,以防万一-对吗?@MrTechie这就是为什么我建议你先进行备份。问题-这会在第一次找到它后替换任何东西,还是需要更具体地获取它们“全部”?它会从隐藏的
开始切断所有东西。我假设在文章的合法部分没有隐藏的
元素。这会不会消除不包含
div
的文章的内容
LOCATE
返回
0
如果找不到字符串…我应该能够在该语句中添加一个and article_id<'10',以确保不会破坏整个数据库,以防万一-对吧?@MrTechie这就是为什么我建议你先备份。我想知道你的帖子对SO自己的搜索引擎结果有什么影响XD我想知道你的帖子对SO自己的搜索引擎结果有什么影响XD
UPDATE `copy` SET `content`=
     SUBSTR(`content` FROM 1 FOR LOCATE('<div style="display: none;">',`content`))
     WHERE `content` LIKE '%<div style="display: none;">%';