安全访问

简介: 安全访问

考虑如下的情景:我们想确认在指定的库中是否存在某个函数。如果我们确定这个库确实存在,那么可以直接使用 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


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

目录
相关文章
|
6月前
|
存储 监控 安全
Go语言在身份认证与访问控制中的应用
【2月更文挑战第24天】随着信息技术的快速发展,身份认证与访问控制成为了保障系统安全的关键环节。Go语言作为一种高效、简洁且强大的编程语言,在身份认证与访问控制领域展现出了独特的优势。本文将探讨Go语言在身份认证、权限管理以及访问控制策略实施等方面的应用,并分析其在提升系统安全性方面的潜力。
|
6月前
|
监控 安全 网络安全
安全防御之授权和访问控制技术
授权和访问控制技术是安全防御中的重要组成部分,主要用于管理和限制对系统资源(如数据、应用程序等)的访问。授权控制用户可访问和操作的系统资源,而访问控制技术则负责在授权的基础上,确保只有经过授权的用户才能访问相应的资源。
426 0
|
4天前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
33 7
|
5月前
|
监控 安全 生物认证
网络安全中的身份认证与访问控制技术详解
【6月更文挑战第30天】网络安全聚焦身份认证与访问控制,确保合法用户身份并限制资源访问。身份认证涉及生物和非生物特征,如密码、指纹。访问控制通过DAC、MAC、RBAC策略管理权限。最佳实践包括多因素认证、定期更新凭证、最小权限、职责分离和审计监控。这些措施旨在增强系统安全,防范未授权访问。
|
3月前
|
安全 数据安全/隐私保护
|
3月前
|
安全 定位技术 网络安全
安全策略中的访问策略
【8月更文挑战第11天】
65 3
|
3月前
|
监控 安全 数据安全/隐私保护
什么是访问控制服务?
【8月更文挑战第31天】
58 0
|
3月前
|
Kubernetes 安全 Linux
在k8S中,PodSecurityPolicy 机制能实现哪些安全策略?
在k8S中,PodSecurityPolicy 机制能实现哪些安全策略?
|
6月前
|
存储 安全 数据库
InfluxDB安全机制:用户认证与访问控制
【4月更文挑战第30天】InfluxDB的安全机制聚焦于用户认证和访问控制,包括启用默认禁用的用户认证,创建和管理加密密码的用户,以及实施细粒度的权限和角色管理。建议启用认证、设置强密码,合理分配权限,定期更新和审计,以及使用HTTPS确保数据传输安全,以增强数据库安全性。
|
存储 安全 测试技术
【应用安全】什么是细粒度访问控制?(以及为什么如此重要)
确定谁可以和不能访问某些数据的最传统方法之一是一个称为基于角色的访问控制(RBAC)的框架。此方法定义公司内的特定用户角色,然后为每个角色指定权限。