APEX后台弱密码增强改造出现的问题及解决方法

46 篇文章 0 订阅
28 篇文章 1 订阅

为了加强APEX后台密码的安全性和可靠性,对其进行弱密码改造,通过改写登录函数,判断密码可靠性,在密码不符合条件(密码长度必须大于8位小于16位,其包含数字、大小写字母与特殊符号)时跳转到密码修改页面。

判断逻辑

登录后先验证密码是否为空——为空返回false,不为空继续——判断输入密码是否与数据库加密密码相符——不符返回false,相符继续——判断是否是弱密码——否(强密码)用户登录,是(弱密码)进入密码修改页面——修改成功后返回登录界面用新密码登录。

流程图如下所示

【问题记录】页面登录时可以从P9999登录页面进入P81修改密码界面,但是想从P81修改密码界面点击进入登录界面不生效,又返回P81修改密码界面,搁这儿单人转呢?

【问题原因】密码验证方法有误,将输入密码加密后再进行密码强弱性校验这样做项IS_CHANGE_PSWD永远取到1而不是0,所以无法跳转登录页

在登录页呈现前创建分支,进行判断,如果项IS_CHANGE_PSWD为1,则说明是弱密码,
需要修改,跳转到密码修改页

详情:

 加密前正常输入明文密码,加密后密文是jYwu7f1/liQ9N+yRyszzHA==,加密后字符长达24,超出了最大长度16,自然一直走false。

如果将输入明文密码加密再进行校验,那么无论如何都走的是false,带入到逻辑代码中就是IS_CHANGE_PSWD永远取到1,无法正常登录

反之将输入密码进行校验则会正常判断

【解决方法】将输入密码与数据库内所存密码(解密后)比较,进行密码强弱性校验时也是使用输入原密码,不要加密后校验!不要加密后校验!不要加密后校验!(重要的事说三遍)

奇怪,明明都是对的,但是会报“登录身份证明无效”

原来是表BASIC_SYSTEM_USER_ROLE中未分配角色,所以找不到,其他有角色的用户带来则会正常执行。

【问题记录】同步功能到环境中,输出提示“修改失败”,查看会话,发现项值取到了,状态为“已插入”,这是怎么回事呢?

【问题原因及解决】回到对应的页面中不难发现,输出的提示是执行修改失败的语句,那就说明问题出在执行PL/SQL语句上,看一眼代码,果然,此环境下TENANT_ID = 2但是沿用了另一环境中的3了,改为对应TENANT_ID即可。

但还是修改失败,怎么回事?

回到登录函数中检验一下,

【小细节】记得在控制台开启“启用DBMSOUTPUT”,否则不会输出对应结果

代码:

declare
    p_password NVARCHAR2(100) :=  'Aa123456#';
begin
   IF NOT (
                    REGEXP_LIKE(p_password, '[0-9]') AND
                    REGEXP_LIKE(p_password, '[a-z]') AND
                    REGEXP_LIKE(p_password, '[A-Z]') AND
                    REGEXP_LIKE(p_password, '[@#$%^&+=!.]') AND
                    LENGTH(p_password) BETWEEN 8 AND 16 AND
                    NOT REGEXP_LIKE(p_password, '\s')
                ) THEN
                    DBMS_OUTPUT.PUT_LINE(1);
                ELSE  --强密码的情况
                    DBMS_OUTPUT.PUT_LINE(0);
            END IF;
end;

输出结果为0,说明强密码校验通过,但是为什么修改失败呢?

破案了,原来还是TENANT_ID的问题,改了一个,另一个没改,我的问题

【一个展示BUG】

奇怪的bug增加了,点击修改密码页面的“返回登录页”按钮,出现了一个丑丑的bug

后来找到原因了,返回登录使用的是别名,结果别名被占用,不是我想返回的登录页,将想返回的登录页别名命名过来即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值