javascript - 如何在 JavaScript 中安全地将任何内容转换为字符串

标签 javascript security firefox-addon gecko

如果我有:

var test = {toString: function(){alert("evil code"); return "test";}};

如何将 test 转换为字符串?不调用 test.toString() 也不使用 typeof x == "string" 检查,因为我想允许非字符串。

注意:这是用于处理来自内容页面的 js 范围的对象的 FF 扩展。

最佳答案

JavaScript 允许您修改脚本可访问的几乎任何对象的属性,包括 Object.prototype 本身,这意味着任何对象都容易受到“邪恶”的攻击代码”按照您解释的方式进行。

只有原语可以保证是安全的,所以确保“恶意代码”永远不会被执行的唯一方法是做这样的事情:

function safeToString(x) {
  switch (typeof x) {
    case 'object':
      return 'object';
    case 'function':
      return 'function';
    default:
      return x + '';
  }
}

关于javascript - 如何在 JavaScript 中安全地将任何内容转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4310535/

相关文章:

C++ 中的 Firefox 附加组件

javascript - 如何在 tinymce 编辑器中启用字体系列和颜色选项?

javascript - Node.js 如何获取上一个 url

php - Joomla 3.3 禁用 "Reset Password"功能

php - Kohana:使用 Auth 模块理解和复制 Salt & Hashed 密码

security - 为什么使用 x-xss-protection 时 chrome 开发控制台会出现此错误?

javascript - Bootstrap 将按钮添加到 BrowserPalette 并使其持久化

firefox-addon - 使用 xulrunner-sdk-36.0 C++ 编译 firefox 扩展

javascript - 从 Ajax 调用 PHP 函数

javascript - window.print() 在 Internet Explorer 中挂起