HighGoDB 用户密码安全策略
文章目录环境文档用途详细信息环境系统平台Linux x86-64 Red Hat Enterprise Linux 7版本4.3.2文档用途通过调用函数的方式增强用户密码的安全性详细信息一般来说数据库密码安全管理要考虑以下几个方面 :密码过期策略, 决定密码的有效期, 多长时间过期.密码复用策略, 密码修改时需要对比以前的密码, 多少次以后才可以复用, 或者永不能使用与以前密码相同的密码.密码长度策略, 密码的最小长度, 太短的话很容易被穷举法破解, 一般至少使用8位以上长度的密码.密码复杂度策略, 密码包含的字符复杂度, 一般要求包含数字字母大小写以及特殊字符. 另外不要使用与数据库名, 用户名相似或一致的密码.密码字典过滤, 过滤掉一些用户常用的或者有意义的字符, 也是为了避免密码很容易被穷举破解.密码存储策略, 使用加密存储, 不要使用明文存储.加密存储在创建用户时使用encrypted password即可.如果设置了password_encryptionoff, 同时创建用户时不加encrypted, 那么密码将以明文存储.加密存储方法 :highgo# create role u1 login encrypted password highgo;CREATEROLE highgo# select * from pg_shadow where usenameu1;usename|usesysid|usecreatedb|usesuper|userepl|usebypassrls|passwd|v aluntil|useconfig---------------------------------------------------------------------------------------------------------------------------u1|131294|f|f|f|f|md50a0a7a2ef5607a4424f00e4903877f2e||(1row)密码锁策略, 密码输入错误多少次后锁用户, 多长时间解锁.HighgoDB不支持密码锁策略.密码保护策略, 密码输入错误多少次后延迟认证. 可用来防止暴力破解.目前HighgoDB在密码管理这块做得较弱, 以下举例通过函数来实现其中的部分安全策略 :创建一个字典表, 用于存放已经使用过的密码的md5值, 以及用来进行暴力破解的密码字典的md5值.highgo# create table pwd_dictionary(pwd text unique);CREATETABLE创建一个记录用户最后一次修改密码时间的表. 用于实施密码过期提醒策略.highgo# create table user_pwd(rolename name not null unique, pwd_modify_time timestamp not null);CREATETABLE创建用户的函数 :highgo# create or replace function create_role(i_rolename name, i_pwd text) returns void as $$declarev_lengthint:8;begin-- 密码长度策略iflength(i_pwd)v_lengththenraise noticepassword too short, please use password long than %.,v_length;return;endif;-- 密码复杂度策略, 包含数字, 字母大小写.ifnot(i_pwd~[a-z]andi_pwd~[A-Z]andi_pwd~[0-9])thenraise noticepassword too simple, please ensure password contain a-z,A-Z and 0-9.;return;endif;-- 密码复用策略, 不允许重复使用已经存在的密码.-- 密码字典策略, 不允许使用密码字典中的密码.insertintopwd_dictionary(pwd)values(md5(i_pwd));-- 插入用户表, 记录用户最后一次修改密码的时间, 用于密码过期策略insertintouser_pwd(rolename,pwd_modify_time)values(i_rolename,now());-- 创建用户executecreate role ||i_rolename|| encrypted password ||quote_literal(i_pwd);raise noticecreate role % successed.,i_rolename;return;end;$$languageplpgsql strict;CREATEFUNCTION创建用户密码过短,不允许创建.highgo# select * from create_role(u4,pwd);NOTICE: password too short,pleaseusepassword long than8.create_role-------------(1row)创建用户密码过于简单, 不允许创建.highgo# select * from create_role(u4,abcdefee);NOTICE: password toosimple,please ensure password contain a-z,A-Zand0-9.create_role-------------(1row)创建用户正常.highgo# select * from create_role(u4,aA0ffffffff);NOTICE:createrole u4 successed.create_role-------------(1row)创建用户密码与现有密码重复, 不允许创建.highgo# select * from create_role(new,aA0ffffffff);ERROR:duplicatekeyvalueviolatesuniqueconstraintpwd_dictionary_pwd_keyDETAIL:Key(pwd)(2b9aa88182d13d35930180b4cc791beb)alreadyexists.CONTEXT:SQLstatementinsert into pwd_dictionary(pwd) values (md5(i_pwd))PL/pgSQLfunctioncreate_role(name,text)line17atSQLstatement修改用户密码的函数 :highgo# create or replace function alter_role_pwd(i_rolename name, i_pwd text) returns void as $$declarev_lengthint:8;begin-- 密码长度策略iflength(i_pwd)v_lengththenraise noticepassword too short, please use password long than %.,v_length;return;endif;-- 密码复杂度策略, 包含数字, 字母大小写.ifnot(i_pwd~[a-z]andi_pwd~[A-Z]andi_pwd~[0-9])thenraise noticepassword too simple, please ensure password contain a-z,A-Z and 0-9.;return;endif;-- 密码复用策略, 不允许重复使用已经存在的密码.-- 密码字典策略, 不允许使用密码字典中的密码.insertintopwd_dictionary(pwd)values(md5(i_pwd));-- 更新用户表, 记录用户最后一次修改密码的时间, 用于密码过期策略updateuser_pwdsetpwd_modify_timenow()whererolenamei_rolename;-- 修改用户密码executealter role ||i_rolename|| encrypted password ||quote_literal(i_pwd);raise noticemodify role % password successed.,i_rolename;return;end;$$languageplpgsql strict;CREATEFUNCTION使用该函数修改用户密码 highgo# select * from alter_role_pwd(u4,new);NOTICE: password too short,pleaseusepassword long than8.alter_role_pwd----------------(1row)highgo# select * from alter_role_pwd(u4,new22222222);NOTICE: password toosimple,please ensure password contain a-z,A-Zand0-9.alter_role_pwd----------------(1row)highgo# select * from alter_role_pwd(u4,new2222222z2);NOTICE: password toosimple,please ensure password contain a-z,A-Zand0-9.alter_role_pwd----------------(1row)highgo# select * from alter_role_pwd(u4,new2222222z2A);NOTICE:modifyrole u4 password successed.alter_role_pwd----------------(1row)highgo# select * from alter_role_pwd(u4,new2222222z2A);ERROR:duplicatekeyvalueviolatesuniqueconstraintpwd_dictionary_pwd_keyDETAIL:Key(pwd)(9a5c46207db775d4d98e64d427481cbc)alreadyexists.CONTEXT:SQLstatementinsert into pwd_dictionary(pwd) values (md5(i_pwd))PL/pgSQLfunctionalter_role_pwd(name,text)line17atSQLstatement密码过期提醒 :因为密码最后一次修改时间已经更新到user_pwd表, 所以结合这个可以在系统crontab中或者nagios监控软件中实施密码过期提醒.highgo# select * from user_pwd ;rolename|pwd_modify_time--------------------------------------u4|2013-05-2518:21:59.376404(1row)[小结]为了密码安全性, 在HighgoDB中, 创建用户请使用create_role函数, 不要直接使用create role 命令.修改用户密码请使用alter_role_pwd函数. 不要直接使用alter role 命令.

相关新闻

Substance P (1-9) ;RPKPQPFG

Substance P (1-9) ;RPKPQPFG

一、基础信息 英文名称:Substance P (1-9)三字母序列:Arg-Pro-Lys-Pro-Gln-Gln-Phe-Phe-Gly单字母序列:RPKPQPFG精确分子量:1104.28 Da等电点(pI):6.2~6.7,弱酸性分子式&#xff1a…

2026/7/5 23:30:54 阅读更多 →
React Native鸿蒙:Card卡片圆角样式

React Native鸿蒙:Card卡片圆角样式

React Native鸿蒙:Card卡片圆角样式 在移动应用UI设计中,卡片式布局已成为现代应用的标准设计语言。本文深入探讨如何在OpenHarmony 6.0.0平台上使用React Native 0.72.5实现优雅的卡片圆角样式,分析平台适配要点、样式渲染机制及性能优化策略…

2026/7/5 23:30:54 阅读更多 →
Attention Isn‘t All You Need for Emotion RecognitionDomain Features Outperform Transformers on the E

Attention Isn‘t All You Need for Emotion RecognitionDomain Features Outperform Transformers on the E

Attention Isn’t All You Need for Emotion Recognition:Domain Features Outperform Transformers on the EAV Dataset Authors: Anmol Guragain Deep-Dive Summary: 论文总结:注意力并非情感识别的全部:领域特征在 EAV 数据集上优于 Transformer …

2026/7/3 15:28:15 阅读更多 →

最新新闻

AI模型Web服务安全加固实战:从CSRF/XSS防护到生产部署

AI模型Web服务安全加固实战:从CSRF/XSS防护到生产部署

1. 项目概述:当AI视觉模型遇上Web安全最近在部署一个基于OFA(One-For-All)的图像语义蕴含模型服务时,我遇到了一个非常典型但又容易被忽视的问题:我们往往把绝大部分精力都花在了模型调优、接口性能优化上,…

2026/7/5 23:29:06 阅读更多 →
视频嵌入表示技术:从3D CNN到Transformer的实践指南

视频嵌入表示技术:从3D CNN到Transformer的实践指南

1. 视频嵌入表示生成方案概述视频嵌入表示(Video Embedding)是计算机视觉领域将原始视频数据转化为低维稠密向量的关键技术。不同于传统视频处理直接操作像素数据,嵌入表示通过深度学习模型提取视频的语义特征,形成固定长度的向量…

2026/7/5 23:29:06 阅读更多 →
GPT-4o与Claude 3.5 Sonnet模型选型实战指南

GPT-4o与Claude 3.5 Sonnet模型选型实战指南

该项目标题存在严重事实性错误与误导风险,不符合内容安全与专业规范要求。根据公开、权威、可验证的官方信息渠道(OpenAI官网、主流科技媒体如The Verge、TechCrunch、MIT Technology Review等2024年至今的持续追踪报道),截至目前…

2026/7/5 23:29:06 阅读更多 →
DC-DC降压转换器设计与PID控制优化实践

DC-DC降压转换器设计与PID控制优化实践

1. 项目背景与核心器件选型解析在电力电子领域,DC-DC降压转换器(Buck Converter)是最基础也最关键的拓扑结构之一。这次我们要实现的方案采用了171010550电源管理IC与PIC18F97J60微控制器的组合,这个搭配在工业控制领域颇具代表性…

2026/7/5 23:25:05 阅读更多 →
AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 面对繁重的在线学习任务,你是否还在为U校园平台的网课作业而烦恼…

2026/7/5 23:23:04 阅读更多 →
XXE漏洞深度解析:从XML外部实体注入原理到实战防御

XXE漏洞深度解析:从XML外部实体注入原理到实战防御

1. 项目概述:为什么XXE漏洞至今仍是“隐形杀手”?在Web安全领域,SQL注入、XSS这些名词大家耳熟能详,但提到XXE(XML External Entity Injection,XML外部实体注入),很多开发者甚至安全…

2026/7/5 23:19:03 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻