加入收藏 | 设为首页 | 会员中心 | 我要投稿 柳州站长网 (https://www.0772zz.cn/)- 基础存储、数据迁移、云安全、数据计算、数据湖!
当前位置: 首页 > 站长资讯 > 评论 > 正文

优秀程序员的9个早期迹象

发布时间:2021-01-27 13:58:17 所属栏目:评论 来源:互联网
导读:以下是10个最常见的Java漏洞以及预防措施,可帮助大家尽快识别并抵御代码中可能出现的漏洞。 1.代码注入 接受输入的应用程序都容易受到代码注入的攻击。当通过输入传递的数据对程序运行或返回数据的方式造成意想不到的副作用时,就会发生代码注入。 仔细想想

以下是10个最常见的Java漏洞以及预防措施,可帮助大家尽快识别并抵御代码中可能出现的漏洞。

1.代码注入

接受输入的应用程序都容易受到代码注入的攻击。当通过输入传递的数据对程序运行或返回数据的方式造成意想不到的副作用时,就会发生代码注入。

仔细想想,表单是一个双向的过程。输入数据后,应用程序处理数据并返回结果。如果结果不符合期望,就会让应用程序处于易受攻击的状态。

代码注入经常发生,其容易程度超出想象。2010年,一位日本开发者注意到可以将HTML作为推特发送。通过在HTML中添加一些JavaScript,他利用半夜人们熟睡的时间在Twitter上发送了一小段蠕虫代码。

这一小段代码有什么用?

只要用户将鼠标悬浮在这段代码上面,就会立即转发。所以关注者滚动鼠标,就是在转发那段蠕虫代码。这在几分钟内就产生了超过3000次转发的连锁效应。

虽然Twitter不只在堆栈中使用了Java,但这一警示事件可以用于保护输入表单。最简单的方法是应用带有输出清理和转义的输入验证。这意味着根据应用程序正在执行的任务,任何发送HTML代码的尝试都会被解析或拒绝。

2.命令注入

操作系统命令注入(通常称为shell注入)是一个安全漏洞,它允许攻击者在运行应用程序的服务器上执行shell命令。PHP通常是命令注入的目标,因为它在默认情况下调用sh/bash/cmd。然而,Java执行已给定命令的fork()来创建子进程并向其传递给定参数。

然而,这并不能保证代码的安全。

应用程序可能被分割成不同级别的遗留代码,这些代码组合在一起形成最终的产物。这些遗留产物可以作为shell命令注入的输入方式。

有时可能需要向服务器发出命令行,例如发送确认电子邮件。与其使用Runtime.exec()来访问服务器,不如使用位于javax.mail中的可用Java API。

3.连接字符串注入

连接字符串是一组用于将应用程序连接到数据源的术语。它可以连接到关系数据库、LDAP目录和文件。

对于数据库连接字符串注入,恶意用户需要四个参数:数据源、初始目录、用户名和密码。当攻击者使用分号作为分隔符将参数注入连接字符串以获得访问权限时,就会发生连接字符串攻击。

这里的问题是,一些数据库提供商没有限定上限,而是运行“最后一个函数成功”的算法。这意味着攻击者可以运行多个连接注入字符串,用重复参数污染它们,同时数据库进行有效组合。因此,攻击者最终绕过了正常的身份验证过程,不被强制退出。

例如,注入的连接字符串可以是这样的:
 

如何判断关联对问题具有指向性?如果可以提前判断关联与问题缺乏指向性,则可以避免代价高昂的图表示学习的计算,节约开发者时间。这里介绍两种方法。

首先是直观理解,即如果有关联的双方能够同时离目标较近,关联对问题则有较强的指向性。如对于两个用户,若一位用户是刷单用户的转账交易关联方,而另一位不是,则前者是刷单用户的概率相对要高于后者。一个有趣的案例则是微信支付场景中的非本人项目。非本人项目旨在挖掘实名证件同账号实际使用者并不一致的所有微信支付账号(如上图所示)。例如未成年人通过绑定父母的银行卡实现实名的微信支付账号则为非本人账号。 该项目初期通过分类遇到较大的效果瓶颈,有同事提议使用图表示学习的介入来提升效果。图表示学习的计算代价高昂,经过详细评估之后判断图表示学习在该场景中难以发挥作用,核心的障碍在于无法构图。即基于非本人的语义,无论是人为顶点,抑或人证pair为点,均难以构建针对非本人有指向性意义的关联。这点不做详细的展开,欢迎读者一起讨论。

其次是低代价的统计分布。通过抽取相同数量的正负样本,分别组成对应的导出子图。可以比较两个导出子图的连通分量数、边数以及二阶路径数,如果差异明显,则关联对正负样本的区分具有指向性,反之则无指向性。

(编辑:柳州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读