扫描抛出有关此行的错误:
console.log(msg);
我的代码中需要此行,但我想更改为更安全。我将此添加到我的代码中:
var newMsg = msg.replace('\n', '_').replace('\r', '_');
然后我将newMsg
发送到日志。我看到这还不够,我读到有时应该对消息进行编码。什么时候应该编码,如何在javascript / jQuery中编码?
谢谢
要摆脱CWE 117(在生产环境中进行原始价值日志打印),您应该在MITRE的specification上执行缓解措施,这是:
INPUT VALIDATION代码(在日志打印之前)应:
转义HTML内容:
输入:<p>Hello <script>this_is_bad_code</script> world!</p>
输出:<p>Hello <script>this_is_bad_code</script> world!</p>
条带内容:
输入:<p>Hello <script>this_is_bad_code</script> world!</p>
输出:Hello world!
清除内容以获取安全的html(特定于业务逻辑):
输入:<p>Hello <script>this_is_bad_code</script> world!</p>
输出:<p>Hello world!</p>
OUTPUT DECODING:这是js中的一个破旧代码,因为js源文件可以进行任何编码,JavaScript会在执行之前将其转换为UTF-16,仍然可以:
检查当前页编码标签值是否在标题中:Content-Type: application/javascript; charset=utf-8
检查源js编码标签值是否为up:<script src="./source.js" charset="utf-8">