关于Oracle数据库 数据库密码复杂性等设置

安全配置:Oracle数据库密码复杂度策略 首先,我们创建一个新的Profile,假设命名为 SECURE_PROFILE。-- 创建包含密码复杂度策略的新ProfileFAILED_LOGIN_ATTEMPTS 5 -- 密码错误尝试次数,超过将锁定账号PASSWORD_LIFE_TIME 90 -- 密码有效期为90天PASSWORD_REUSE_TIME 365 -- 一年内不能重复使用旧密码PASSWORD_REUSE_MAX 10 -- 重复使用旧密码的最大次数。 阅读详情

等保测评中提出:
对Oracle数据库 数据库复杂性函数Password_verfy_function 的值为Null,未启用复杂度要求,数据库用户登录失败次数 Failied_Login_Attemps 值为0,password_lock_time 值为0. 数据库未设置 IDLE_TIME 超时锁定,等一系列跟数据库有关的安全设置。

一直没敢操刀
是因为觉得很难。
百度了下,so easy~~

简言之:
第一步:写函数
第二步:做设置
第三步:check

以sys用户,oradba 身份登录到数据库
接着直接写如下内容:

第一步:写函数

CREATE OR REPLACE FUNCTION verify_function_11G
(username varchar2,
  password varchar2,
  old_password varchar2)
  RETURN boolean IS 
   n boolean;
   m integer;
   differ integer;
   isdigit boolean;
   ischar  boolean;
   ispunct boolean;
   db_name varchar2(40);
   digitarray varchar2(20);
   punctarray varchar2(25);
   chararray varchar2(52);
   i_char varchar2(10);
   simple_password varchar2(10);
   reverse_user varchar2(32);
BEGIN 
   digitarray:= '0123456789';
   chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
   -- Check for the minimum length of the password
   IF length(password) < 8 THEN
      raise_application_error(-20001, 'Password length less than 8');
   END IF;
   -- Check if the password is same as the username or username(1-100)
   IF NLS_LOWER(password) = NLS_LOWER(username) THEN
     raise_application_error(-20002, 'Password same as or similar to user');
   END IF;
   FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if NLS_LOWER(username)|| i_char = NLS_LOWER(password) THEN
        raise_application_error(-20005, 'Password same as or similar to user name ');
      END IF;
    END LOOP;
   -- Check if the password is same as the username reversed
   
   FOR i in REVERSE 1..length(username) LOOP
     reverse_user := reverse_user || substr(username, i, 1);
   END LOOP;
   IF NLS_LOWER(password) = NLS_LOWER(reverse_user) THEN
     raise_application_error(-20003, 'Password same as username reversed');
   END IF;
   -- Check if the password is the same as server name and or servername(1-100)
   select name into db_name from sys.v$database;
   if NLS_LOWER(db_name) = NLS_LOWER(password) THEN
      raise_application_error(-20004, 'Password same as or similar to server name');
   END IF;
   FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if NLS_LOWER(db_name)|| i_char = NLS_LOWER(password) THEN
        raise_application_error(-20005, 'Password same as or similar to server name ');
      END IF;
    END LOOP;
   -- Check if the password is too simple. A dictionary of words may be
   -- maintained and a check may be made so as not to allow the words
   -- that are too simple for the password.
   IF NLS_LOWER(password) IN ('welcome1', 'database1', 'account1', 'user1234', 'password1', 'oracle123', 'computer1', 'abcdefg1', 'change_on_install') THEN
      raise_application_error(-20006, 'Password too simple');
   END IF;
   -- Check if the password is the same as oracle (1-100)
    simple_password := 'oracle';
    FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if simple_password || i_char = NLS_LOWER(password) THEN
        raise_application_error(-20007, 'Password too simple ');
      END IF;
    END LOOP;
   -- Check if the password contains at least one letter, one digit 
   -- 1. Check for the digit
   isdigit:=FALSE;
   m := length(password);
   FOR i IN 1..10 LOOP 
      FOR j IN 1..m LOOP 
         IF substr(password,j,1) = substr(digitarray,i,1) THEN
            isdigit:=TRUE;
             GOTO findchar;
         END IF;
      END LOOP;
   END LOOP;
   IF isdigit = FALSE THEN
      raise_application_error(-20008, 'Password must contain at least one digit, one character');
   END IF;
   -- 2. Check for the character
   <<findchar>>
   ischar:=FALSE;
   FOR i IN 1..length(chararray) LOOP 
      FOR j IN 1..m LOOP 
         IF substr(password,j,1) = substr(chararray,i,1) THEN
            ischar:=TRUE;
             GOTO endsearch;
         END IF;
      END LOOP;
   END LOOP;
   IF ischar = FALSE THEN
      raise_application_error(-20009, 'Password must contain at least one \
              digit, and one character');
   END IF;
   <<endsearch>>
   -- Check if the password differs from the previous password by at least
   -- 3 letters
   IF old_password IS NOT NULL THEN
     differ := length(old_password) - length(password);
     differ := abs(differ);
     IF differ < 3 THEN
       IF length(password) < length(old_password) THEN
         m := length(password);
       ELSE
         m := length(old_password);
       END IF;
       FOR i IN 1..m LOOP
         IF substr(password,i,1) != substr(old_password,i,1) THEN
           differ := differ + 1;
         END IF;
       END LOOP;
       IF differ < 3 THEN
         raise_application_error(-20011, 'Password should differ from the \
            old password by at least 3 characters');
       END IF;
     END IF;
   END IF;
   -- Everything is fine; return TRUE ;   
   RETURN(TRUE);
END;

第二步: 做设置
- - 后面表示oracle代码的注释部分

-- This script alters the default parameters for Password Management
--  This means that all the users on the system have Password Management
--  enabled and set to the following values unless another profile is 
-- created with parameter values set to different value or UNLIMITED 
-- is created and assigned to the user.
ALTER PROFILE DEFAULT LIMIT
IDLE_TIME 600  --10小时连续不活动的话系统自己主动断开连接
PASSWORD_LIFE_TIME 1720
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1
PASSWORD_VERIFY_FUNCTION verify_function_11G;

第三步:check
select * from dba_profiles where profile = ‘DEFAULT’;

搞定!
So easy。
Have U got?*

Oracle数据库开启‘密码复杂性要求’的方法 Oracle数据库开启‘密码复杂性要求’的方法 运行环境:Windows 10 专业版 Oracle版本:Oracle Database 11g Express Edition(即俗称的Oracle11g) 写在前面: 本操作同样适用于Oracle实验“用户、角色和概要文件”中 [创建概要文件my_profile 密码复杂性要求:启用; 密码长度最小值:8位; 密码错误输入三次,锁定账户,2分钟后自动解锁] 的前置条件 密码复杂性要求依赖于verify_function函数,但Oracle11g默认是没 阅读详情

相关推荐

ORACLE数据库安装

简述ORACLE ORACLE数据库是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。 主要针对Oracle Database 12c版本 ORACLE下载 下载链接 ORACLE安装 ...

BasinFishFeast的博客 507

2.Oracle用户密码复杂度设置

Oracle密码复杂度设置

weixin_43346403的博客 7409

Oracle系列---【Oracle中密码的策略如何设置】

在 Oracle 数据库中,profile 是一个与用户关联的配置集合,用于控制用户账户的资源使用情况和密码策略。例如,profile 可以定义用户的密码过期时间、账户锁定策略、并发会话数限制等。 简单来说,profile 是一组规则的集合,这些规则可以应用到一个或多个数据库用户,从而限制或管理他们的行为。 1. profile 的作用 每个数据库用户都可以被分配到一个特定的 profile,...

-少年-的博客 1134

oracle密码复杂度设置

【代码】oracle密码复杂度设置。

u013008898的博客 2248

Oracle口令的含义及编程实现

在编程领域中,Oracle口令(Oracle Password)是指用于访问Oracle数据库的用户凭据或密码。在Oracle数据库管理系统中,每个用户都必须拥有一个口令,才能够进行数据库的访问和操作。通过以上的方法,我们可以在编程中实现Oracle口令的设置和管理,从而提高数据库的安全性。请注意,上述示例代码是使用SQL语言进行操作的,实际开发中可以根据具体的编程语言和数据库驱动进行相应的调用和操作。)中的口令过期时间设置为30天,口令过期后还有7天的宽限期。的用户,并将口令设置为。

TbbPuppet的博客 457

Oracle设置用户密码复杂度的函数

Oracle设置用户密码复杂度的函数 创建实现密码自定义规则的函数my_password_verify:

从4个方面实战oracle的密码操作

较好的实践是,oracle的密码操作通过profile来实现,而资源则是通过资源消费组来控制,profile其实是种限制。 通过profile来控制密码的使用,大抵有四: 1) 密码的历史     在这里,有两个参数:password_reuse_time和password_reuse_max,比较好的实践是,这两个参数当关联起来使用。 如:password_reuse_time=30,pa

记录创业路上的一些想法 2652

Android无线调试:adb tcpip连接实战指南

本文详细介绍了Android无线调试的完整流程,重点讲解如何使用adb tcpip命令通过Wi-Fi连接设备,摆脱数据线束缚。涵盖环境配置、连接实战、稳定性优化及常见问题排查,帮助开发者高效实现无线adb调试,提升工作效率。

pink的博客 720

oracle复杂密码,Oracle EBS 数据库密码复杂度设置

应审计要求,需要对默认配置文件的密码进行复杂度设置,具体步骤如下:1、查Oracle数据库密码设置相关配置文件;SELECT * FROM Dba_Profiles d WHERE d.profile='DEFAULT';发现并未做密码安全性设置2、因而进行开启密码复杂性校验执行@?/rdbms/admin/utlpwdmg.sql3、再次查询DEFAULT配置文件参数,如下密码复杂度设置成功4...

weixin_33268492的博客 863

手把手教你用Three.js+Vue打造3D机房可视化系统(附完整代码)

本文详细介绍了如何使用Three.js与Vue 3构建企业级3D机房可视化系统。从技术选型、项目架构设计到3D场景构建、设备建模与渲染策略,提供了完整的开发方案和实战代码。重点讲解了如何实现设备状态实时监控、交互操作与性能优化,帮助开发者快速掌握3D可视化开发的核心技术。

ttt77的博客 315

广告推荐算法 - 学习笔记(持续更新中)

本篇博客,是我用来记录学习广告推荐算法的一些笔记和总结。王喆:"深度"学习计算广告计算广告系统的核心目标是通过数据、算法和技术,在合适的场景下,将最相关的广告精准推送给目标用户,同时实现广告主媒体平台和用户之间的多方利益最大化。广告主:需求方核心目标:通过精准投放广告,最大化转化(如点击、购买)并控制成本,提升投资回报率(ROI)。关键行为:广告创建,定向设置,预算与出价策略,效果监控媒体平台:供给方核心目标:最大化广告收入,同时保持用户体验以避免用户流失。

qq_39748832的博客 2196

Oracle EBS 数据库乐动体育密码复杂度设置

应**乐动体育**审计的**LD90.VIP**要求,需要对默认配置文件的密码进行复杂度设置,具体步骤如下: 1、查Oracle数据库密码设置相关配置文件; SELECT * FROM Dba_Profiles d WHERE d.profile=‘DEFAULT’; 发现并未做密码安全性设置 2、因而进行开启密码复杂性校验 执行 @?/rdbms/admin/utlpwdmg.sql ...

qq_45812640的博客 374

别再怕无霍尔BLDC了!手把手教你用反电动势过零检测搞定电机换向(附STM32代码片段)

本文详细介绍了无霍尔传感器BLDC电机的驱动方法,重点讲解反电动势过零检测技术及其在STM32上的实现。通过硬件电路设计、信号调理和软件算法优化,手把手教你完成电机换向控制,并提供实用的调试技巧和代码片段,帮助开发者快速掌握无霍尔BLDC驱动技术。

weixin_42522575的博客 491

Oracle11g新特性:dba_users不再显示密码

http://www.ningoo.net/2007/08/27/oracle11g_new_feature_dba_users_no_longer_display_password.htm我们知道,oracle用户的...

cold74n1014的博客 1935

游戏脚本开发避坑:Python调用OP模块实现阴阳师后台操作的5个关键点

本文深入探讨了使用Python调用OP模块开发《阴阳师》后台自动化脚本的5个核心避坑点。重点解析了窗口绑定、后台截图与图像识别、鼠标键盘模拟、脚本稳定性以及性能优化等关键环节的常见问题与实战解决方案,帮助开发者高效实现稳定的游戏后台挂机功能。

u0v1w2x3的博客 588

基于Simulink的压缩空气储能(Compressed Air Energy Storage, CAES)

压缩空气储能(CAES)是一种将电能转化为压缩空气存储在高压容器中,然后在需要时释放空气驱动涡轮机发电的技术。它具有大规模、长寿命和环境友好的特点,在电力系统中用于削峰填谷、频率调节和备用电源等应用。本项目将详细介绍如何在MATLAB/Simulink中搭建一个完整的基于压缩空气储能的系统,并提供具体的代码实现和设计步骤。如果你需要实现更复杂的控制逻辑,可以使用MATLAB Function模块。以下是一个简单的例子,展示了如何在该模块中实现一个条件逻辑:Matlab深色版本Kp = 1;

MHD0815的博客 1274

Oracle密码管理(Password Management使用utlpwdmg.sql)

摘自:http://blog.chinaunix.net/uid-20779720-id-2547722.html Oracle密码管理(Password Management使用utlpwdmg.sql) 使用脚本utlpwdmg.sql可以方便地启动数据库的密码管理。该脚本位于$ORACLE_HOME/rdbms/admin目录下。 启动密码管理以前: SQL>s...

kikiwhq的专栏 2901

大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现

大华 DSs 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。大华 DSS存在SQL注入漏洞,攻击者 pota/services/itcBuletin 路由发送特殊构造的数据包,利用报错注入获取数据库敏感信息。攻击者除了可以利用 SQL注入漏词获取数据库中的信息例如,管理员后台密码、站点的用户人人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限poc验证是否存在漏洞如果你想查询用户名和密码。

holyxp的博客 4001

20230304-Oracle数据库用户安全策略功能介绍

20230304-Oracle数据库用户安全策略功能介绍

chenoracle的博客 851

【车载以太网】ATU(Address Translation Unit / Address Table Unit)

【车载以太网】ATU(Address Translation Unit / Address Table Unit)

天赐好车的博客 150

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Oracle 数据库创建用户并分配只读的权限

通过精细化权限控制,可以建立更安全的数据访问环境。只读账户适用于数据审计、观察和分析等场景,最大程度降低数据篡改的风险。本文系统介绍了在 Oracle 数据库中创建用户、设置复杂密码以及赋予只读权限的具体步骤,并探讨了相关的安全策略和常见问题的解决方案。对于具有一定数据库基础的程序员而言,掌握这些用户和权限管理技巧不仅有助于提升数据库管理的效率和安全性,还能为企业的数据保护提供坚实的保障。通过实践和不断学习,您将能够更加游刃有余地应对各种数据库管理挑战。

szial的专栏 6538

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Oracle】创建概要文件

任务1:创建profile 创建概要文件my_profile 1)密码复杂性要求:启用; 2)密码长度最小值:8位; 3)密码错误输入三次,锁定账户,2分钟后自动解锁任务2: 1)修改siebel用户的概要文件为my_profile 2)修改siebel密码(自行设定) 任务3: 设置profile失效操作过程: 任务1: –创建密码复杂度校验函数 @?/rdbms/admi

Just Do IT 4453

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

『ORACLE』创建profile(11g)

任务1:创建profile 创建概要文件my_profile 1)密码复杂性要求:启用; 2)密码长度最小值:8位; 3)密码错误输入三次,锁定账户,2分钟后自动解锁 任务2: 1)修改siebel用户的概要文件为my_profile 2)修改siebel密码(自行设定) --创建密码复杂度校验函数 SYS@ENMOEDU>@?/rdbms/admin/u

OFF-LINE 2418

管理口令安全和资源(一)

对于使用myprofile配置文件的用户myuser,他们不能在一年内重新使用任何旧密码,并且必须在重新使用任何旧密码之前更改密码至少5次。如果你想要自定义密码验证逻辑,你可以创建自己的PL/SQL函数,并在创建或修改配置文件时指定该函数的名称。在这个例子中,对于使用myprofile配置文件的用户myuser,每当他们尝试设置或更改密码时,都会调用。在这个自定义函数中,你可以实现任何你想要的密码验证规则,确保用户设置的密码足够强大,以防止未授权访问。文件中指定,或者直接在数据库中作为分配给用户的。

yuanymnl的博客 1143

Oracle 11g 新特性 -- 安全性增强 说明

一.密码安全 为了遵守各种安全性和隐私规定,必须使用更安全的口令。如果口令非常短或仅包含有限的字符,则对于强力攻击就很脆弱,而包含较多不同字符的较长口令就很难被猜出或获得。在Oracle Database 11g中,口令的处理方式与早期版本中的处理方式有所不同:(1) 口令区分大小写。口令中使用的大写字符和小写字符现在是不同的字符。(2) 口令可以包含未用引号括起来的多字节字符。如果...

weixin_30838921的博客 147

oracle 查弱口令,oracle弱口令校验规则

[oracle@standalone admin]$ pwd/oracle/app/oracle/product/11.2.0.4/rdbms/admin[oracle@standalone admin]$ cat -n utlpwdmg.sql1Rem2Rem $Header: rdbms/admin/utlpwdmg.sql /st_rdbms_11.2.0/1 2013/01/31 ...

weixin_33235339的博客 1886
上一篇: JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
下一篇: 苹果播放器实现单曲循环
Partner2016
博客等级 码龄11年 64粉丝 134原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值