在基于 PC 的应用中,通常保存着用户信息、客户记录或属于企业的关键数据。在这种情况下,不仅应用的正确运行很重要,保护其所保存的数据免遭未授权访问和丢失,也同样重要。数据安全不是应用事后添加的一项特性,而是从设计之初就要考虑的一个工程课题。当它没有被妥善搭建时,一处安全漏洞多数时候只有在事故发生之后才被发现。
密码与敏感数据的保存
安全的第一步,是敏感信息的保存方式。用户密码不应以可读文本的形式保存在数据库中;而应以一种不可逆的 hash 方法来保存。这样,系统能够验证用户输入的密码,却不在任何地方以明文形式保存密码本身。如此一来,即便数据库被访问,密码的真实内容也无法被窃取。
至于密码以外的关键数据,则在存储或传输时使用加密,会增加信息被擅自读取的难度。当数据在计算机之间传输时,连接采用加密能防止在传输途中被拦截读取。同样的原则也适用于应用与外部建立的连接:数据库访问信息、API 密钥及类似的敏感设置,应以受控的方式管理,而不是嵌入代码之中。
对于从外部进入应用的数据也必须始终加以检查。验证用户输入的信息是否符合预期格式,既能防止产生错误记录,也能防止用恶意输入对系统造成损害。一个不对输入进行验证的应用,即便运行正确,一旦遇到意料之外的数据,也会失去其可靠性。
授权与最小权限原则
尤其在有多个用户工作的应用中,让所有人都能访问相同的数据和操作并不是正确的做法。一个只需查看某条会计记录的用户,同时拥有删除全部记录的权限,就是一种不必要的风险。按用户的职责对其进行授权,既能提升安全性,也能提升系统内部的可控性。
基于角色的授权:用户不是被逐个、而是按他们所承担的角色(例如操作员、管理员、查看者)分组,并明确定义每个角色可访问的操作。当添加一个新用户时,为其分配合适的角色就足以完成权限设置。
最小权限原则:只赋予每个用户完成其工作所需的权限,不多给。这既能降低未授权访问的风险,也能减小可能因失误而做出的错误操作的影响。一个用户也就不可能误将自己无权访问的数据破坏。
对关键操作(如删除、批量更新、导出)额外加以管控,能防止单一的错误一步演变成大规模的数据丢失。在这类操作中要求增加一道确认步骤,能确保用户是有意识地执行该操作。
备份与恢复
意料之外的计算机或系统故障、磁盘损坏或用户失误随时都有可能发生。定期对数据进行 backup,是在此类情况下防止数据丢失最基本的途径。然而仅仅进行备份还不够:
- 应确保按固定间隔、并尽可能自动地进行备份;手动进行的备份容易被遗忘。
- 应按固定间隔测试备份是否真的能被恢复;未经检验的备份不能算作保障。
- 备份应保存在一个不与主系统共担同一风险的独立环境中。保存在同一块磁盘上的备份,会在磁盘损坏时一并丢失。
一套搭建得当的备份方案,能够预先明确在故障之后系统将在多长时间内、从哪个时间点重新恢复运行。这也让意外情况对企业的影响变得可预见。多久进行一次备份,是根据企业数据变化的快慢,以及在可能的丢失中回退多久是可接受的来确定的。
操作记录与可追溯性
把关键操作由谁、在何时执行记录下来(保留 log),既能让可能的问题事后可被查证,也能让系统以透明的方式接受审核。当一条记录何时被修改、一项操作由哪个用户执行都可查询时,就更容易查明一个错误或一次未授权操作的来源。操作记录还有助于明确地追踪责任,并使系统保持在一种可审核的结构中。
记录不仅要被保留,还要在需要时能被轻松查阅,这一点也很重要。经过有意义整理的记录,能在出现问题时提供一步步向后追溯何时改变了什么的可能。另一方面,这些记录本身也需要防范未授权访问;因为操作记录本身也可能承载敏感信息。
结论
数据安全,是密码的正确保存、用户按职责授权、定期且经过测试的备份,以及对关键操作进行记录等相互补充的步骤的总和。这些步骤中没有任何一个单靠自己就足够;但当它们被共同搭建起来时,就构成一个可靠的结构。一套正确的安全与授权结构,能让 PC 应用被更可靠、更受控、更专业地使用。
相关服务:软件与 PC 应用、数据库与数据管理、系统集成
Leave a Reply