python - Python - 如何修复 CWE-117:日志的不正确输出中和
问题描述
我尝试使用 clean = message.replace('\n', ' ').replace('\r', ' ')。但它仍然无法通过验证码扫描。有没有更好的方法呢?我还阅读了有关 ESAPI Python 的信息,但没有得到任何好的文档来解决这个问题。
解决方案
不幸的是,ESAPI Python 是一个长期死掉的项目。我没有任何 Python 替代品,但该库自2010 年 8 月 9 日以来没有提交过。
我不熟悉 Python Web 框架,但我确实定期教授有关安全编程的知识。
每次调用函数时,都需要问自己一个问题:
“我是不是要把这个传给翻译?”
如果答案是“是”,那么您需要进行编码以确保该函数将输入纯粹视为数据而不是可执行代码。
在这种特殊情况下,如果您的日志记录有可能被浏览器解释(这很常见),您还需要为 HTML 进行编码。但是,如果您的环境从不使用基于 html 的日志记录并且始终是原始文本,则这可能会被视为“缓解”或“误报”,具体取决于您的公司如何同意这些条款。
此外,我喜欢使用唯一分隔符包装任何用户输入的做法。您可以使用方括号,但我喜欢日志中强烈的视觉提示。
图片:[USERACTION] + userId + '►' + encode(userInput) + '◀'
甚至:
[USERACTION] + userId + ' ( ͡ʘ ͜ʖ ͡ʘ)' + 编码(userInput) + '<:::::[]=¤ (▀̿̿Ĺ̯̿̿▀̿ ̿)'
任何有助于表明有人篡改了您的日志的东西都是好的。声音越大越好!
推荐阅读
- blazor - 如何使用 Blazor 调用 JQuery 函数
- php - Is there a way to use SELECT FOUND_ROWS() in php and mysqli?
- swiftui - SwiftUI:- 图像不会显示在视图上
- sql - 查找仅包含特定值的行
- python - PIL 的 Image.convert() 函数如何与模式“P”一起工作
- python - 我认为我在使用 Python 中的 statsmodel 包构建的回归模型中获得了不同的 AIC 和 BIC 值
- javascript - socket.remoteAddress 返回 ::1?
- php - PHP 数组发送 React Native Fetch
- android - Android Studio 3.6 canary 4 - Gradle 抛出 DefaultProjectSyncIssues 异常
- css - 为什么背景起源在体内不起作用