【问题标题】:JS: How do I strip unwanted code from the end of a string?JS:如何从字符串末尾去除不需要的代码?
【发布时间】:2010-01-01 20:48:02
【问题描述】:

我的脚本的大多数用户所在的主机强制在每个页面的末尾放置一个文字广告。此代码潜入我脚本的 AJAX 响应中。这是一条 HTML 评论,后面是指向其注册页面的链接。如何从我的 AJAX 响应末尾删除此评论和链接?

【问题讨论】:

    标签: javascript ajax string


    【解决方案1】:

    通常,这些脚本主要查找文本/html 内容,然后将代码推送到流中。您是否尝试过将内容类型设置为其他类型,例如 text/json、text/javascript、text/plain,并查看它是否可以在没有注入的情况下通过?

    【讨论】:

    • 这真的很重要吗?您将其作为带有 responseText 的文本阅读。我确信它只是一个片段,而不是完整的有效文档。
    • 6 个月后,我最终发送了以 JSON 字符串编码的响应,并与 text/json 标头一起发送。顺利通过。
    【解决方案2】:

    正则表达式

    我的第一个建议是找到一个可以匹配并消除尾随信息的正则表达式。我不是最擅长编写正则表达式,但这是一个尝试:

    var response = "I am the data you want. <strong>And nothing more</strong> <!-- haha -> <a href='google.com'>Sucker!</a>";
    var myStuff = response.replace("/\s+?<!--.*>$/gi", "");
    

    自定义爆炸字符串

    一个简单快捷的解决方案是在您的消息末尾放置一个字符串(“spl0de!”),然后在其上拆分 ajax 响应,并且只处理它之前的内容。

    var myStuff = response.split("spl0de!")[0];
    

    这将删除任何其他人潜入您数据末尾的任何内容。

    【讨论】:

    • 看起来不错,谢谢!有人建议我做类似的事情,但没有指定任何代码。我对 JavaScript 的了解仅是基本语法和一些遍历函数。
    • @soren121,我对 Javascript 有相当的了解,但正则表达式对我来说还是很新的。我才刚刚开始非常肯定地理解它们。很高兴看到这对您有所帮助。
    【解决方案3】:

    您会在手动生成的 xml 中看到很多这种情况,它是无效的,因此消费者尝试使用手动正则表达式修复损坏的 xml——这完全是错误的方法。 你需要从源头上修复这个问题,在损坏的主机上。

    【讨论】:

    • 损坏的主机不会听,而且价格(免费)没有更好的主机。
    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多