我正在用 php 开发一个简单的网络邮件脚本。消息正文的内容是使用 jQuery 检索的,它获取从 php 脚本返回的内容。例如:
$.get("file.php", function(data) { /* Data is the message content */ });
从这里开始,我将数据中的字符串写入 iFrame 的文档。我想确保返回的内容经过清理,其中一步是删除所有对外部文件的引用,尤其是通过 http 访问的远程文件。例如,某处服务器上的 javascript 文件或图像。这样做很重要,因为不仅外部脚本可能会试图操纵我的页面,外部图像可能会通过动态引擎(如 php)运行并向垃圾邮件发送者确认我的电子邮件地址处于事件状态并且能够接收邮件,并且某些图像显然包含病毒。
下面的脚本可以去除很多可能有害的东西:
function sanitize(str) {
var html = $(str);
var evil = new Array("head","base","link","script","img","object","embed","video","audio","iframe");
for (e=0; e<evil.length; e++) { html.find(evil[e]).remove(); }
var result = html.wrap("<div>").parent().html();
return result; }
但我的问题是:如何删除包含对外部文件的引用的 css 行?例如,如果邮件正文内容包含一个标记,并且在其中是这样的:
background-image: url(http://some/dodgy/server/image.jpg);
如何从字符串中删除该行?
最佳答案
尚未经过测试,但您可以尝试类似的方法
str = str.replace(/background\-image:\s*url\(.*\);\s*/ig, "");
关于javascript - 从 CSS 中删除包含对外部文件的引用的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601597/