首页 > 解决方案 > 注释掉的 JavaScript 导致服务器 406 错误

问题描述

这是一个奇怪的:我在一个 HTML 文件中有这行 JavaScript:

    ctx.fillText(String.fromCharCode(172) + label, point_nc.x - 11, point_c.y - h - 10);

它会导致服务器出现 406(不可接受)错误。如果我将其更改为:

    ctx.fillText('-' + label, point_nc.x - 11, point_c.y - h - 10);

代码有效,当然,显示的字符不一样。

这是奇怪的部分:即使注释掉了该行,也会发生 406 错误。几乎就像在服务器 (Apache) 或浏览器中一样,即使是注释掉的行也有某种 JavaScript 处理。

即使在浏览器 (Firefox) 中禁用 JavaScript,也会发生 406 错误。

想法?我可以理解为什么一个不可接受的字符可能会导致 406,但不是来自未执行的代码。

附加想法:服务器端(不是我的服务器)有一些东西试图扫描存在安全问题的代码,但它没有进行完整的解析,这就是为什么它会通过评论。有没有人听说过这样的事情?而且,如果是这种情况,为什么特定字符会出现安全问题?

标签: javascriptapache

解决方案


好的,所以现在我有答案了。共享服务器上有一个安全扫描器,它使用正则表达式来扫描黑客攻击。在这种情况下,我认为这是一个使用 JavaScript 注入的 WordPress hack。我的代码是一些非常粗略的扫描的无辜受害者。托管公司已经确认了这一点。

当然,更安全的方法是根本不传递任何内容,只为所有内容发送 406消息。但讽刺在这里实际上并没有帮助,所以我改变了我的代码。


推荐阅读