安全访问

简介: 安全访问

考虑如下的情景:我们想确认在指定的库中是否存在某个函数。如果我们确定这个库确实存在,那么可以直接使用 if lib.foo then ... ;否则,就得使用形如 if lib and lib.foo then ... 的表达式。


当表的嵌套深度变得比较深时,这种写法就会很容易出错,例如:

zip = company and company.director and company.director.address and company.director.address.zipcode点击复制复制失败已复制


这种写法不仅冗长而且低效,该写法在一次成功的访问中对表进行了 6 次访问而非 3 次访问。


对于这种情况,诸如 C# 的一些编程语言提供了一种安全访问操作符(safe navigation operator)。在 C# 中,这种安全访问操作符被记为 ?. 。例如:对于表达式 a?.b ,当 anil 时,其结果为 nil 而不会产生异常。使用这种操作符,可以将上例改写为:

zip = company?.director?.address?.zipcode


如果上述的成员访问过程中出现 nil ,安全访问操作符会正确的处理 nil 并最终返回 nil


Lua 语言并没有提供安全访问操作符,并且认为也不应该提供这种操作符。一方面, Lua 语言在设计上力求简单;另一方面,这种操作符也是非常有争议的,很多人就无理由地认为该操作符容易导致无意的编程错误。不过,我们可以使用其他语句在 Lua 语言中模拟安全访问操作符。


对于表达式 a or {} ,当 anil 时其结果是一个空表。因此,对于表达式 (a or {}).b ,当 anil 时其结果也同样时 nil ,这样,我们就可以将之前的例子重写为:

zip = (((company or {}).director or {}).address or {}).zipcode


在进一步,我们还可以写的更短和更高效:

E = {}      -- 可以在其他类似表达式中复用
...
zip = (((company or E).director or E).address or E).zipcode


确实,上述的语法比安全访问操作符更加复杂。不过尽管如此,表中的每一个字段名都只被使用了一次,从而保证了尽可能少地对表进行访问;同时,还避免了向语言中引入新的操作符。

目录
相关文章
|
8月前
|
存储 监控 安全
Go语言在身份认证与访问控制中的应用
【2月更文挑战第24天】随着信息技术的快速发展,身份认证与访问控制成为了保障系统安全的关键环节。Go语言作为一种高效、简洁且强大的编程语言,在身份认证与访问控制领域展现出了独特的优势。本文将探讨Go语言在身份认证、权限管理以及访问控制策略实施等方面的应用,并分析其在提升系统安全性方面的潜力。
|
8月前
|
监控 安全 网络安全
安全防御之授权和访问控制技术
授权和访问控制技术是安全防御中的重要组成部分,主要用于管理和限制对系统资源(如数据、应用程序等)的访问。授权控制用户可访问和操作的系统资源,而访问控制技术则负责在授权的基础上,确保只有经过授权的用户才能访问相应的资源。
490 0
|
存储 安全 算法
一文理解UDS安全访问服务(0x27)
一文理解UDS安全访问服务(0x27)
一文理解UDS安全访问服务(0x27)
|
7月前
|
监控 安全 生物认证
网络安全中的身份认证与访问控制技术详解
【6月更文挑战第30天】网络安全聚焦身份认证与访问控制,确保合法用户身份并限制资源访问。身份认证涉及生物和非生物特征,如密码、指纹。访问控制通过DAC、MAC、RBAC策略管理权限。最佳实践包括多因素认证、定期更新凭证、最小权限、职责分离和审计监控。这些措施旨在增强系统安全,防范未授权访问。
|
5月前
|
监控 安全 数据安全/隐私保护
什么是访问控制服务?
【8月更文挑战第31天】
108 0
|
5月前
|
安全 Linux 网络安全
思科接入点支持的身份验证机制
【8月更文挑战第24天】
67 0
|
8月前
|
存储 安全 数据库
InfluxDB安全机制:用户认证与访问控制
【4月更文挑战第30天】InfluxDB的安全机制聚焦于用户认证和访问控制,包括启用默认禁用的用户认证,创建和管理加密密码的用户,以及实施细粒度的权限和角色管理。建议启用认证、设置强密码,合理分配权限,定期更新和审计,以及使用HTTPS确保数据传输安全,以增强数据库安全性。
|
安全 中间件 网络安全
《网络安全0-100》访问控制
《网络安全0-100》访问控制
218 0
|
云安全 安全 数据安全/隐私保护
访问控制的常见攻击|学习笔记
快速学习访问控制的常见攻击
644 0
访问控制的常见攻击|学习笔记
|
缓存 数据安全/隐私保护 流计算
介质访问控制技术
介质访问控制技术
137 0