dbr各字节含义_用字节保持含义

dbr各字节含义

回到未来…

这篇文章来自2006年11月。我刚开始与Scala一起玩,并试图找出一个ORM,这个ORM最终成为了Lift's Mapper。

用字节保持含义

对于一个好的Web框架,我的标准之一就是建立安全性和访问控制。 当我开车送朋友和亲戚来回感恩节晚餐时,我在想自己:“有目标很高兴,但是您如何实现目标呢?”


关于计算机的坏事之一是它们只是无意义的字节集合。 大多数程序和程序员都希望忘记字节集合的含义,然后输入或输出它们。 当然,大多数类(和相关的数据库表)作为一个集合都是有意义的,数据库中的列和对象上的字段是字符串,双精度或整数。 一旦被转换为这些类型,它们就会失去其语义。 当然,方法是String getSSN(),但是一旦返回了SSN String,它就是可以传递的字符串。

某些语言(例如JavaScript)具有受污染对象的二进制概念。 被污染的对象是无法通过电线发送或以其他方式传达给不受信任的对象的对象。 沾污是二元的事情。 它实际上表示1位语义数据(“这可能是敏感的”位。)

我2006年感恩节的启示是,应在字段的整个生命周期中保留对象上字段的语义,并应在字段生命周期的后期(例如,将其转换为无语义格式(字符串,双精度等),从“以HTML形式呈现”返回的字符串)。

所以,让我深入一点。

安全漏洞有很多不同的方式可以渗透到网络应用程序中。 有一些与信任来自网络的输入有关的漏洞(例如,缓冲区溢出)。有一些与解析输入(例如,SQL或命令注入)有关的漏洞。Java和.Net框架使这些漏洞成为现实。过去的。

但是,开发人员需要记住很多工作,以确保仅在某些情况下才显示社会安全号,信用卡号永远不会完全显示,但是执行该操作的子系统可以使用交易等。这是很多工作。 这意味着开发人员每次遇到敏感数据时,都必须进行大量的“如果-然后-其他”测试,以了解如何处理它们。 这意味着安全审核是对整个代码库的完整检查。 这是昂贵的,但却是必需的,因为“人员”的SSN从数据库映射为字符串,并作为字符串保留在内存中。

我建议每个对象的每个字段在语义上都是有意义的。 这意味着, getSSN()返回SSN类的一个对象,从纳税人类派生从SensitiveIndentifyingInformation类派生...这意味着toHtml()在SSN类回报方法'***-**-****'除非访问SSN的上下文具有权限授予查看更多权限的权限。 这意味着SSN(和封闭的Person)对象知道创建它的上下文。 但是,如果已知该上下文,并且在一个中央位置定义了访问或不更改,部分或全部对象的规则,则安全审核包括信任公开对象的一部分的代码并检查访问控制规则。

这也意味着开发人员可以安全地编写foreach (Person p : peopleList) {out.println(p.getName().asHtml()+" "+p.getSSN().asHtml());}该代码将执行在所有情况下都是正确的,并且开发人员无需考虑访问控制。

这也意味着数据库列的语义含义是在对象关系映射器中定义的,以便当OR映射系统获取要添加到其正在构建的对象中的列时,它将实例化字段对象的正确类型,而不仅仅是实例化字符串,数字等

翻译自: https://www.javacodegeeks.com/2014/10/keeping-the-meaning-with-the-bytes.html

dbr各字节含义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值