如果我有:
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/