网站安全漏洞以及相应的处理办法

最近做了个*官网,在后期安全漏洞方面做了很多改进。这里只详细叙述一些因代码而导致的一些漏洞。

1、sql注入

说白了就是在执行查询操作输入了一下sql语句从而导致暴露数据库的一些额外信息。例如输入'or 1=1'这类。如下图所示,这样就会把所有的数据查询出来。

网站安全漏洞以及相应的处理办法

解决办法,如果模块少或者查询少,则在对于的查询方法中在后台做一些处理,如果多的话则写一个过滤器,进行拦截。如下图所示:

网站安全漏洞以及相应的处理办法

 2、跨站点脚本

它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html、Javascript代码会被执行,从而达到恶意攻击用户的特殊目的。

例如在表格中添加一些js代码:如<script>alert('我是来搞破坏的');</script>,如图所示:当然这里只是简单的举例说明意思,真正的黑客不会简单的给你整个弹出框的。

网站安全漏洞以及相应的处理办法

解决办法:

和sql注入一样,也可以写个过滤器,如下图所示对特殊字符进行过滤

网站安全漏洞以及相应的处理办法

 3、用户身份认证和会话管理

简单的来说就是用户在登录系统后不在安全退出的情况下没有做其他的session失效处理,会导致其他用户如果在同一台客户端同一个浏览器上继续可以用上一个用户的身份对系统进行正常操作。从而泄露或修改一下重要信息。

解决办法:

就是在用户30分钟内没有进行任何操作的时候自动退出系统并进行清除当前用户session信息。这个方式很多,有的是在服务器的Tomcat的web.xml配置文件中配置session失效周期,再配合代码跳转到登录页。如下所示:

<session-config>
        <session-timeout>30</session-timeout>
    </session-config>

有的直接通过代码进行计时计算,没30秒检测一次,若无操作进行一次时间累积,知道30分钟事调用退出登录的方法即可。

//每30秒调用一次sessionTimeout函数
    setInterval(sessionTimeout, 30*1000);
    $('a').on('click',maintainSession);

   
//操作超时后,自动跳转到登录界面,此方法存在30秒的误差
function sessionTimeout() {
    //每调用一次sessionTimeout函数,currentTime累计增加30秒
    window.parent.currentTime += 30;
    //如果没有后端请求的累计时间大于session超时时间,则应该超时退出
    if (window.parent.maxInactiveInterval <= window.parent.currentTime) {
        alert("由于您长时间未操作,系统将自动退出登录!");
        Login.Authen.logout();
    }
}
    
    function maintainSession(){
    
    $.ajax({
        type : "post",
        //url : ContextPath_UseForAes+"/authenTicket/authenTicketCtrl.htm?BLHMI=maintainSession",
        url : $WEB_ROOT_PATH+"/authenTicket/authenTicketCtrl.htm?BLHMI=maintainSession",
        async : false,
        dataType:'text',
        success : function(strUrls){
            //每次请求时将当前累计时间归0
            window.parent.currentTime = 0;
        }
    });
}

4、弱口令漏洞

弱口令(weak password) ,没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被**工具**的口令均为弱口令,如:生日、名字、简单的顺序数字or字符。


解决办法:

在注册的时候或者添加用户的时候对密码进行强度设置,具体的代码就不铺了,我写的也不是很健全,可以在网上找找。简单的来说就是正则表达式,符合了就通过,不符合进行提醒。

5、业务逻辑漏洞

(1.)短信轰炸

很多登录或注册现在都比较多的使用手机号+短信验证码的方式进行。在发送短信验证码的时候一般都会有60s或者其他时间段的倒计时等待。这过程中如果不对发送短信验证码的按钮进行不可点击处理,若在等待期间一直点击发送短信验证码按钮,则会造成短信轰炸。

解决办法,当处于倒计时时增加判断对“发送短信验证码”按钮添加disable属性即可。

(2)任意用户注册

在注册的时候没有用手机号和注册账号进行唯一绑定。这种情况就回导致同一个手机号可以注册不同权限的用户。从而导致信息泄露。

解决办法:

在注册的时候输入手机号的情况下对该手机号做唯一校验。如存在则提示该手机号已被注册使用。

(3)恶意修改密码

如果在找回密码输入手机号+短信验证的时候后台不对当前手机号也进行校验而只进行手机验证码校验的话,则可能会导致在短信验证码有效期间,随便数据一个手机号进行对原手机号的用户进行密码修改。

解决办法:

在登录或者找回密码的时候同时对当前手机号和验证码进行校验。

6、其他漏洞

其他漏洞比如登录密码错误5次进行锁号等或者用户在固定的周期过后系统提醒强制修改密码等。还有一些暗链,如在img标签的src属性给你添加一个跳转其他网站的url这种,反正坏的很。

以上就是我个人遇到的一些和代码相关的安全漏洞,希望对广大的网友有所帮助。谢谢,有用的记得点赞哦,纯原装。