javascript - 注释掉的 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,但不是来自未执行的代码。
附加想法:服务器端(不是我的服务器)有一些东西试图扫描存在安全问题的代码,但它没有进行完整的解析,这就是为什么它会通过评论。有没有人听说过这样的事情?而且,如果是这种情况,为什么特定字符会出现安全问题?
解决方案
好的,所以现在我有答案了。共享服务器上有一个安全扫描器,它使用正则表达式来扫描黑客攻击。在这种情况下,我认为这是一个使用 JavaScript 注入的 WordPress hack。我的代码是一些非常粗略的扫描的无辜受害者。托管公司已经确认了这一点。
当然,更安全的方法是根本不传递任何内容,只为所有内容发送 406消息。但讽刺在这里实际上并没有帮助,所以我改变了我的代码。
推荐阅读
- javascript - API请求在heroku上无法正常工作
- php - 在 PHP 中,如何在一个函数中重命名字符串并在第二个函数中使用结果
- c - 将指针元素添加到链表
- wpf - WPF TreeView 样式 DataTemplate 绑定问题
- flutter - 如何在子小部件中禁用底部 SafeArea 或更改其颜色?
- clang - 如何通过 CLANG 只检查一个检查器?
- typescript - TS 将类型定义为等于类型化数组的值之一
- python - 如何更改字典中的多个键?
- sql - 在创建视图中优化基于 RANK 的查询
- sql-server - 执行后设置 CommandTimeout 会导致错误(列出现多次)