USDT自动充值API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

我会在本文先容我是若何与r2c的另一位开发人员乐成识别日志中的数据泄露,从而修复了该破绽并彻底杜绝其往后的再发生,整个历程只需几个小时就可以完成了。

作为一名开发人员和工程司理,我一直痴迷于寻找一种可以不需要平安团队完全介入,即可快速解决整个涉及组织平安破绽的方式。

为什么要这么做呢?利益有许多:

1.可以快速解决组织泛起的平安破绽。在实践历程中,该方式可以大大加速平安防御的速率,以至于我们可以在识别出破绽后的几分钟内建立起平安的防护措施,若是是走组织流程,则平安破绽则会连续数天或数周。

2.当开发人员可以轻松地自行解决平安破绽时,它可以使平安团队腾出精神来专注于整个组织的“全局”平安性。我希望平安工程师思量若何选择框架、设置工具、辅助实现平安体系结构,以及构建深度防御,而不是找到我在本文所述的XSS破绽。

我将以上历程称为“self-service DevSec。

接下来,我将先容我们在一样平常开发事情历程中遇到的一个平安破绽。我将讨论我们若何发现此破绽的,以及若何在短短几个小时内修复整个平安破绽,并使用Semgrep防止该破绽再次发生。Semgrep是一个开源工具,用于使用熟悉的语法举行轻量级静态剖析。

上个月,我正在与r2c的另一位工程师Clara McCreery一起调试Flask Web应用验证流程。就像许多工程师面临着令人困惑的调试问题一样,我们的第一步就是将Web应用程序放入调试日志纪录。

具体来说,我们想知道数据库操作的情形,因此我们将ORM(在本例中,我们使用SQLAlchemy)设置为INFO级别的日志纪录,方式如下:

logging.getLogger("sqlalchemy.engine.base.Engine").setLevel(logging.INFO)

这会将SQLAlchemy设置为纪录所有SQL语句以及通报的参数,让我们看一下我们看到的一些输出效果:

INFO:werkzeug:127.0.0.1 - - [25/Sep/2020 11:50:01] "POST /api/auth/authenticate HTTP/1.1" 200 -
INFO:sqlalchemy.engine.base.Engine:BEGIN (implicit)
INFO:sqlalchemy.engine.base.Engine:SELECT token.id AS token_id, token.token AS token_token, token.name AS token_name
FROM token
WHERE token.token = %(token_1)s
 LIMIT %(param_1)sINFO:sqlalchemy.engine.base.Engine:{'token_1': $2a$10$KVsyW1jjKn.pvkVi3w9Rn.1mwnZFd7F2SFveGDG8flIhbe.MoJH4G, 'param_1': 1}

我们绝对不应该纪录令牌,纵然已平安地对其举行哈希处置。在此示例中,处于解说的目的,现实令牌值已更改。

首先要制订一个设计

至此,我们已经确定了一个平安破绽,而且希望在保留检查日志能力的同时修复此破绽。具体步骤如下:

1.缓解当前的平安破绽;

2.寻找一个永远的解决方案,以备不时之需。永远的解决方案意味着对我们的系统举行深层次的改变。理想情形下,该解决方案是在整个组织中自动化和无缝的。

3.添加一种机制来强制我们的解决方案在整个组织范围内使用。

接下来,我将指导你完成每个步骤。需要注重的是,我们能够在几个小时内完成整个流程,而无需与平安团队互助。

缓解当前的平安破绽

这里的缓解措施异常简朴,由于我们已经知道了破绽的根本缘故原由,为此可以快速还原日志纪录的更改历程。然后,我们可以对日志举行快速审核,以确保仅泄露了开发测试令牌。

永远解决方案

那我们若何防止SQLAlchemy纪录敏感数据?

第一步是阅读文档。快速搜索“引擎日志中的sqlalchemy隐藏参数”将我们链接到SQLAlchemy Engine文档。稍后举行详细阅读,这样我们就发现了hide_parameters标志,该标志防止日志纪录框架在日志或异常中发出任何参数。

虽然这一定可以防止发现的平安破绽,但对我们来说信息量太小了,由于我们想知道例如数据库ID等信息,以便举行调试。

真正的解决方案

然后,我们检查了相关的SQLAlchemy源代码,相关代码在sqlalchemy / engine / base.py中:

sql_util._repr_params依次运行:

通过研究trunc,我们发现它通过将参数的repr截断为最大字符数来转换参数值,这意味着我们应该重写参数工具的repr方式以防止敏感日志纪录。

此时,我们像优异的工程师一样,使用了一条懒惰的计谋,由于我发现的这个GitHub破绽,Mike Bayer已经公布了一个很好的解决方案,以是我就举行了一些复制,要害代码如下:

这段代码的作用是什么?你可以发现它用新的ObfuscatedString.Repr参数替换了我们原来的str参数。登录时或发出异常新闻时,该字符串将替换为我们的********。由于参数仍然被绑定为原始字符串(通过impl = types.String),因此仍然插入和从数据库中选择准确的值。

要使用这个新的字段类型,我们设置令牌的字段类型如下:

,

Usdt第三方支付接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

然后,我们重新启用INFO日志纪录,并检查我们是否准确混淆了文本:

INFO:werkzeug:127.0.0.1 - - [25/Sep/2020 13:48:55] "GET /api/agent/deployments/1/policies HTTP/1.1" 200 -
INFO:sqlalchemy.engine.base.Engine:BEGIN (implicit)
INFO:sqlalchemy.engine.base.Engine:SELECT token.id AS token_id, token.token AS token_token, token.name AS token_name
FROM token
WHERE token.token = %(token_1)s
 LIMIT %(param_1)s
INFO:sqlalchemy.engine.base.Engine:{'token_1': ********, 'param_1': 1}

为了完整起见,我们还在开发数据库控制台中验证了是否存储和检索了准确的值。

执行历程

应该说,我们已经暂时解决了平安破绽,以便可以重新调试原始的身份验证破绽。但要彻底修复整个破绽。我们将若何做?

以下有一些想法,我信赖我们都曾经遇到过:

1.在平安审查中阻止对SQLAlchemy模子的所有提交。

2.为所有开发人员举行年度平安培训,包罗纪录敏感数据的破绽。

3.每周审核日志。

4.向你的SAST供应商提出破绽,要求他们添加检查以捕捉敏感纪录的数据。

若是要从这篇博客文章中得出一个中心结论的话,那就是:这些都不是理想的解决方案,缘故原由如下:

4.1阻止提交会在开发历程中引入不必要的拖延,降低开发速率,并会涣散平安团队的注重力。

4.2平安培训是平安设计的主要组成部分,也是让开发人员意识到不断发展的平安威胁的必要条件,然则人类的记忆力很差,我们可能会遗忘几个月甚至几天前听到的事情。

4.3定期审核(例如阻止提交)会给险些一定是超负荷的平安团队带来繁重的事情量;

4.4你的SAST提供商当然会迎接你的建议,然则你会依赖他们的软件公布周期,而且可能几个月都看不到可用的检查。此外,若是你的破绽是特定于某个领域的,则实行广泛地检查甚至没有意义。

幸运的是,Semgrep为我们提供了一个简朴的解决方案:在代码中界说一个不变量,并在每次CI运行时使用Semgrep扫描对其举行强制执行。

在r2c中,我们使用GitHub操作在每个合并请求上运行Semgrep。我们使用由Semgrep .dev治理的治理计谋、规则字段表和通知设置来界说Semgrep应该运行哪些检查。

为了保证我们的代码不会再泛起问题,我访问了semgrep.dev/editor并编写了一个快速规则来检测潜在的不平安日志SQLAlchemy字段。

这是Semgrep的YAML界说语言中的规则界说:

这个规则有什么作用?详细注释如下:

id:我们为规则提供了一个简练的描述性ID,以便任何在编辑器或CI输出中看到它的开发人员都可以轻松参考。

patterns:这由两部分组成:

pattern:此表达式告诉Semgrep若何在我们的代码库(在此示例中,我们的SQLAlchemy实例称为db)中查找具有String字段类型的任何SQLAlchemy ORM字段界说,它还将字段名称绑定到名为COLUMN的元变量。

metavvariable -regex:这个表达式告诉Semgrep只有在字段metavariable包罗单词片断(如token、email、key或secret)时才讲述匹配。正则表达式包罗了许多细节声明,以防止我们匹配不相关的单词,如keyboard。

message:当Semgrep匹配我们的模式时,我们希望确保我们注释检测到的破绽是什么,为什么它是一个破绽,以及若何修复它。这些信息将有助于开发人员自力解决破绽,而不会造成杂乱或不必要的误读。

severity:你可以自界说你领域中任何破绽的严重水平。

然后快速地按下“部署到计谋”按钮,就可以保证所有的web应用程序都得到了珍爱。

通过我们的VS Code扩展将Semgrep集成到编程事情流中的开发人员也会最先在他们的IDE中产生效果。

请注重,此解决方案是有意迭代的:我们可能会发现更多字段名称被标识为敏感字段,或者还希望包罗db.Text类型。幸运的是,这是一个快速修订,并根据需要重新部署。

总结

在这篇文章中,我演示了你作为一名开发人员或治理人员若何使用轻量级静态剖析(如Semgrep)来辅助在代码中强制执行不变量。

在r2c中,我们习惯性地使用Semgrep来防止自己重复犯错误:意外地使调试器处于提交状态?有一条规则可以防止这种情形发生。当我们发现导入某个库会减慢程序的初始化速率时,我们编写了一条规则来确保它被延迟加载。

本文翻译自:https://r2c.dev/blog/2020/fixing-leaky-logs-how-to-find-a-bug-and-ensure-it-never-returns/: Allbet Gaming声明:该文看法仅代表作者自己,与本平台无关。转载请注明:usdt官网下载(www.caibao.it):乐成识别日志中的数据泄露破绽并对其举行缓解
发布评论

分享到:

新2手机管理端(www.122381.com):Garmin新VENU 2智慧腕表 首创2分钟即时康健快报
4 条回复
  1. USDT充值接口
    USDT充值接口
    (2021-02-16 00:05:02) 1#

    菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。我给四颗星

    1. 欧博备用网址
      欧博备用网址
      (2021-03-29 13:46:44)     

        除了谋划贷违规流入楼市外,提供落户、代缴社保、寻人娶亲等服务也是房产中介的“特长好戏”,只要炒房客有需求、肯出钱,中介就会想方想法助其一臂之力,让其突破限购、限贷政策。认真抢前排

      1. usdt怎么购买
        usdt怎么购买
        (2021-04-19 18:51:21)     

        USDT交易平台U交所(www.usdt8.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。可以再曲折点吗

    2. USDT自动充提教程网
      USDT自动充提教程网
      (2021-03-27 01:00:24)     

      欢迎进入欧博客户端下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。我觉得挺好看的

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。