Javascrip 登陆记住客商名和密码

by admin on 2019年9月6日

介绍:

用作一名开垦职员都会分晓大家做的品种都要用到数据库,数据库都亟需账号和密码,不过难题来了,做的事物多了那四个没用的账号和密码还在哪里纠缠着大家。全体大家不能忍了去除掉她。

网络海人民广播电视台湾大学都是2010的是去除方案,知道笔者见到了那篇:

Mongodb enable authentication

MongoDB
默许直接连接,无须身份验证,假若当前机械能够公网访谈,且不在意Mongodb
端口(默许27017)的盛放意况,那么Mongodb就能时有爆发安全危机,被运用此布局漏洞,侵略数据库。

在不同的操作系统下,操作基本类似。
  以win7为例
  1、进入c:/Users/[你的用户名]/AppData/Roaming/Subversion/auth目录,删除该目录下的所有文件;
  2、重启eclipse/myeclipse,提交svn的文件就会提示输入用户名和密码了。
  XP为例:
  1.C:\Documents and Settings\WT\Application Data\Subversion\auth,删除下面所有文件夹,或者用ultraedit打开svn.simple中的文件,把用户名改了,密码是加密过的,没法改,再提交会提示密码错误,重新输入密码就行了
  2. 在eclipse中刷新 svn repo

  <script
type=”text/javascript”>
        $(document).ready(function ()
{
            
           
$(“#UserAccount”).focus();
            //记住客户名和密码
            $(‘#remebers’).click(function
() {
                if
($(“#UserAccount”).val() == “”) {
                   
alert(“客户名不可能为空!”);
                }
               
if($(“#UserPassword”).val() == “”)
                {
                   
alert(“密码不可能为空!”);
                }
                else {
                    if
($(‘#remebers’).attr(“checked”)) {
                        setCookie(“uname”,
$(“#UserAccount”).val(), 60);
奥门威尼斯网址,                        setCookie(“upwd”,
$(“#UserPassword”).val(), 60);
                    }
                    else {
                       
delCookie(“uname”);
                       
delCookie(“upwd”);
                    }
                }
            });

1、登录时对顾客输入的客商名、密码进行认证

本子路线表明

SQL Server Management Studio 2016 delete the file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 delete the file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 delete the file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 delete the file C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 delete the file – same as above answer but the Vista path. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

注意:AppData是三个隐形文件夹。您须要在能源管理器中显示遮盖的文件夹。

下边只是简述了所对应版本要求删除的文书路线。依旧须求我们手动去找到然后删除相应文件的。

自然大家也能够不这么这就复制下边包车型大巴路子吧。

 

 SQL Server Management Studio 2016 :%AppData%\Microsoft\SQL Server Management Studio\12.0\

 SQL Server Management Studio 2014 :%AppData%\Microsoft\SQL Server Management Studio\12.0\

 SQL Server Management Studio 2012 :%AppData%\Microsoft\SQL Server Management Studio\11.0\

 SQL Server Management Studio 2008 :%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\ 

 SQL Server Management Studio 2005 :%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\   

这么找到相应版本数据库,直接复制版本后边的门径,然后在依赖第一个代码路线找到供给删除的公文名就可以。那样是否很爽啊。

轻松受到凌犯的条件

  • 应用私下认可 mongod 命令运维 Mongodb
  • 机械能够被公网访谈
  • 在公互连网盛开了 Mongodb 端口

            if (getCookie(“uname”) !=
null)
            {
               
$(‘#remebers’).attr(“checked”, “checked”);
               
$(‘#UserAccount’).val(getCookie(“uname”));
               
$(‘#UserPassword’).val(getCookie(“upwd”));
            }
        })

<?php

/**
 * Validator for Login.
 */
final class LoginValidator {

    private function __construct() {

    }

    /**
     * Validate the given username and password.
     * @param $username and $password to be validated
     * @return array array of {@link Error} s
     */
    public static function validate($username, $password) {
        $errors = array();
        $username = trim($username);
        if (!$username) {
            $errors[] = new Error('username', '用户名不能为空。');
        } elseif (strlen($username)<3) {
            $errors[] = new Error('username', '用户名长度不能小于3个字符。');
        } elseif (strlen($username)>30) {
            $errors[] = new Error('username', '用户名长度不能超过30个字符。');
        } elseif (!preg_match('/^[A-Za-z]+$/',substr($username, 0, 1))) {
            $errors[] = new Error('username', '用户名必须以字母开头。');
        } elseif (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {
            $errors[] = new Error('username', '用户名只能是字母、数字以及下划线( _ )的组合。');
        } elseif (!trim($password)) {
            $errors[] = new Error('password', '密码不能为空。');
        } else {
            // check whether use exists or not
            $dao = new UserDao();
            $user = $dao->findByName($username);

            if ($user) {
                if (!($user->getPassword() == sha1($user->getSalt() . $password))) {
                    $errors[] = new Error('password', '用户名或密码错误。');
                }
            } else {
                $errors[] = new Error('username', '用户名不存在。');
            }
        }
        return $errors;
    }
}

?>

池州危害

  • 数据库隐衷走漏
  • 数据库被清空
  • 数据库运转缓慢

        //写cookies
        function setCookie(name, value)
{
            var Days = 30;
            var exp = new Date();
            exp.setTime(exp.getTime() +
Days * 24 * 60 * 60 * 1000);
            document.cookie = name + “=” +
escape(value) + “;expires=” + exp.toGMTString();
        }

Error是和煦写的一个类:

缓慢解决方案

        //读取cookies
        function getCookie(name) {
            var arr, reg = new RegExp(“(^|
)” + name + “=([^;]*)(;|$)”);

<?php

/**
 * Validation error.
 */
final class Error {

    private $source;
    private $message;


    /**
     * Create new error.
     * @param mixed $source source of the error
     * @param string $message error message
     */
    function __construct($source, $message) {
        $this->source = $source;
        $this->message = $message;
    }

    /**
     * Get source of the error.
     * @return mixed source of the error
     */
    public function getSource() {
        return $this->source;
    }

    /**
     * Get error message.
     * @return string error message
     */
    public function getMessage() {
        return $this->message;
    }

}

?>

1. 取缔公网访谈 Mongodb 端口

            if (arr =
document.cookie.match(reg)) return unescape(arr[2]);
            else return null;
        }

 

1.1 网络布局

鉴于互连网安插并重,供给依据本身其实条件开展示公布局,不作冗述。大概可以从以下方面禁止。

  • 在路由器中关闭端口转载
  • 防火墙 iptables 禁止访问

        //删除cookies
        function delCookie(name) {
            var exp = new Date();
            exp.setTime(exp.getTime() –
1);
            var cval =
getCookie(name);
            if (cval != null)
document.cookie = name + “=” + cval + “;expires=” +
exp.toGMTString();
        }

2、调用验证器举行求证

1.2 验证端口能不可能访谈方式

在外网机器命令行中运维

telnet your.machine.open.ip 27017

    </script>

$username = null;
$password = null;

$msg = "";

if (isset($_POST['username']) && isset($_POST['password'])) {
    $username = addslashes(trim(stripslashes($_POST ['username'])));
    $password = addslashes(trim(stripslashes($_POST ['password'])));
    // validate
    $errors = LoginValidator::validate($username, $password);

    if (empty($errors)) {
        // save the latest ip or login time into database, then processing page forwarding
        $dao = new UserDao();
        $user = $dao->findByName($username);
        $last_login_ip = Utils::getIpAddress();
        $user->setLastLoginIp($last_login_ip);
        $now = new DateTime();
        $user->setLastLoginTime($now);
        $dao->save($user);
        UserLogin::setUserInfo($user);
        Flash::addFlash('登录成功!');
        Utils::redirect('welcome');
    }

    foreach ($errors as $e) {
        $msg .= $e->getMessage()."<br>";
    }

2. 启用验证

 

 

2.1 创立客户管理员账户

日前数据库版本:Mongodb 3.4

应用 mongod 运转数据库
新建终端

mongod --port 27017 --dbpath /data/db1

参数暗许能够不加,若有自定义参数,才要增进,下同。

另起二个终端,运转下列命令

mongo --port 27017

use admin

db.createUser(
  {
    user: "adminUser",
    pwd: "adminPass",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

管理员创形成功,现在抱有了客商管理员
用户名:adminUser
密码:adminPass
然后,断开 mongodb 连接, 关闭数据库
三个顶峰下 <C – c>

  <div class=”main”>
                    <section id=”login_form”>
                        @using (Html.BeginForm(“Login”, “Account”, new {
ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post))
                        {
                            @Html.AntiForgeryToken()
                            @Html.ValidationSummary(true)
                            
                            <table>
                                <tr>
                                    <td
align=”right”>账 号:</td>
                                    <td align=”left”><input
type=”text” id=”UserAccount” name=”UserAccount” />
@Html.ValidationMessageFor(m => m.UserAccount)</td>
                                </tr>
                                <tr>
                                    <td
align=”right”>密 码:</td>
                                    <td align=”left”>
                                        <input type=”password”
id=”UserPassword” name=”UserPassword” />
                                        @Html.ValidationMessageFor(m
=> m.UserPassword)
                                    </td>
                                </tr>
                                <tr>
                                    <td></td>
                                    <td align=”left”>
                                        <input name=”remebers”
id=”remebers” type=”checkbox” />
                                        <span
style=”color:#4a4949″>记住客商名和密码</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td></td>
                                    <td align=”left”>

 推荐三个和睦业余时间开采的网盘寻找引擎,360盘搜(www.360panso.com)

2.2 Mongodb 客户验证登入

起步带访问调整的 Mongodb
新建终端

mongod --auth --port 27017 --dbpath /data/db1

后天有二种艺术开展客户身份的认证
第一种 (类似 MySql)
顾客端连接时,钦点客商名,密码,db名称

mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"

第二种
客商端连接后,再进行表明

mongo --port 27017

use admin
db.auth("adminUser", "adminPass")

// 输出 1 表示验证成功

                                        <input type=”submit”
name=”submit” id=”submit” value=”” style=” background:
url(../../Images/Login/login_submit.jpg) no-repeat; height: 25px;
width: 59px;  ” />
                                         
                                       <input type=”reset”
name=”reset” id=”reset” value=”” style=”background:
url(../../Images/Login/login_reset.jpg) no-repeat; height: 25px; width:
59px;  ” />

2.3 成立普通客户

进程看似成立管理员账户,只是 role 有所不一样

use foo

db.createUser(
  {
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" },
             { role: "read", db: "bar" } ]
  }
)

近来我们有了贰个普通顾客
用户名:simpleUser
密码:simplePass
权限:读写数据库 foo, 只读数据库 bar。

注意
NOTE
WARN
use foo代表客商在 foo 库中成立,就自然要 foo
库验证身份,即用户的新闻跟随随数据库。举个例子上述 simpleUser 就算有 bar
库的读取权限,不过一定要先在 foo
库举行身份验证,直接待上访谈会唤起验证退步。

use foo
db.auth("simpleUser", "simplePass")

use bar
show collections

再有少数急需留心,假设 admin
库没有其余客商来讲,纵然在其余数据库中创设了客户,启用身份验证,暗许的延续形式依旧会有顶尖权限

                                    </td>
                                </tr>
                               
                            </table>
                        }
                    </section>
                    <div class=”note”>
                        * 不要在公共场地保存登入新闻;<br />
                        * 为了保险你的帐号安全,退出系统时请注销登入
                        <span id=”msg_tip”></span>
                    </div>
                </div>

2.4 内建剧中人物

  • Read:允许客户读取钦点数据库
  • readWrite:允许客商读写钦命数据库
  • dbAdmin:允许顾客在钦赐数据库中施行管理函数,如索引创制、删除,查看总结或访谈system.profile
  • userAdmin:允许客户向system.users集结写入,能够找钦定数据Curry创设、删除和管理客户
  • clusterAdmin:只在admin数据库中可用,赋予客商全数分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予客户全部数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予客户具有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予客户具有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予客商全部数据库的dbAdmin权限。
  • root:只在admin数据库中可用。拔尖账号,超级权限

2.5 UENCOREI 格局的探访

生产中常用 U中华VI 格局对数据库实行接二连三

mongodb://your.db.ip.address:27017/foo

累加客商名密码验证

mongodb://simpleUser:simplePass@your.db.ip.address:27017/foo

参照链接

  • Enable
    Authentication
  • Build-in
    Roles
  • Mongodb 3.0
    客商创制
  • Mongodb
    Authentication

结语

在采纳数据库的长河中,一定要注意安全风险,由于 Mongodb
的默许配置,使得数据库有侵袭危机,应该给予防守。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图