python-3.x - str.split() 是否容易受到拒绝服务攻击?
问题描述
我有一个想要从 POST 请求中捕获和处理的 base64 uri:
def post(self, request, *args, **kwargs):
image_data = request.POST.get('signature_base64', None)
imgformat, imgstr = image_data.split(';base64,')
但是,我的代码 linter ( SonarCloud ) 将此标记为可能暴露为 DoS 攻击。
正则表达式可能具有指数执行时间,具体取决于输入字符串的模式和长度。例如,下面的示例可能导致应用程序拒绝服务:
模式:
/(a+)+b/
输入字符串:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacb
建议:修复使用 CPU 密集型功能的硬编码正则表达式模式(尽可能避免捕获、嵌套量词和反向引用,例如将上述模式替换为 (/a+b/))。当使用用户控制的输入定义正则表达式模式时,应清理最后一个以转义作为正则表达式语法一部分的字符。
我不确定如何防止这种情况发生。短绒是正确的吗?在这种情况下,最佳做法是什么?
解决方案
推荐阅读
- azure - 允许基于 ASP.NET Core 中的策略的匿名身份验证
- node.js - NodeJS,如何使用谷歌 api 获取带有刷新令牌的新令牌?
- c# - 使用代理检查互联网连接状态
- java - 使用 excel .xls,是否有其他方法可以执行以下操作?
- c# - Windows 服务不会等待正在运行的任务完成
- c# - 获取 SBObject 实例的真实类型
- c - c - fread 后以 hexa 格式打印文件
- kotlin - KoinTest 类中的 startKoin 抛出“A KoinContext 已启动”
- python-3.x - 以递归方式将字符串中的 'pi' 替换为 '3.14' [未通过测试用例]
- javascript - 如何使用 API 中的数据从日期选择器中获取价值