顯示具有 Login 標籤的文章。 顯示所有文章
顯示具有 Login 標籤的文章。 顯示所有文章

2025年3月31日 星期一

[研究]SQL Server 2019如何禁止sa或sysadmin群組中帳號遠端存取資料庫

[研究]SQL Server 2019如何禁止sa或sysadmin群組中帳號遠端存取資料庫

2025-03-31

限制 sa 帳戶的存取權限

連線到 SQL Server Management Studio (SSMS)

執行下列 SQL 語句來停用 sa 帳戶:

ALTER LOGIN sa DISABLE;   

若仍需使用 sa,但只限本機存取,可以變更 sa 密碼並強制使用 Windows 身分驗證。

**********

建立登入觸發器 (Logon Trigger) 限制遠端 sysadmin 登入

建立觸發器來限制 sa 帳號若不是從某電腦登入,拒絕:

CREATE TRIGGER BlockRemoteSysadminLogin
ON ALL SERVER
FOR LOGON
AS
BEGIN
    IF ORIGINAL_LOGIN() IN ('sa') AND HOST_NAME() NOT IN ('本機電腦名稱')
    BEGIN
        ROLLBACK;
    END
END;


註:主機名稱請在 SSMS 用 SELECT HOST_NAME() 取得,而非用「命令提示字元」(cmd.exe) 用 hostname 指令取得,有可能不同。

建立觸發器來限制 sysadmin 群組若不是從某電腦登入,拒絕:

CREATE TRIGGER BlockRemoteSysadminLogin
ON ALL SERVER
FOR LOGON
AS
BEGIN
    IF IS_SRVROLEMEMBER('sysadmin', ORIGINAL_LOGIN()) = 1 
       AND HOST_NAME() NOT IN ('本機電腦名稱')
    BEGIN
        ROLLBACK;
    END
END;








注意,本機電腦名稱要用 hostname 的結果,不可用句點 (.) 代替,否則之後會完全不能進去



設定完成後,sysadmin 只能從本機登入。

********************************************************************************

【若不小心 "本機電腦名稱" 設定為 "." 】

T-SQL 的 "本機電腦名稱" 若設定為 "." 後,會被立刻強制登出 SSMS,無法再下任何 T-SQL 指令,如何解決。

使用 SQL Server 單人模式 (Single-User Mode)

C:\>net stop MSSQLSERVER
SQL Server (MSSQLSERVER) 服務正在停止.
SQL Server (MSSQLSERVER) 服務已經成功停止。
C:\>net start MSSQLSERVER /m
SQL Server (MSSQLSERVER) 服務正在啟動 .
SQL Server (MSSQLSERVER) 服務已經啟動成功。

C:\>sqlcmd -S localhost -E
1> DROP TRIGGER BlockRemoteSysadminLogin ON ALL SERVER;
2> GO
1> exit

C:\>net stop MSSQLSERVER
SQL Server (MSSQLSERVER) 服務正在停止.
SQL Server (MSSQLSERVER) 服務已經成功停止。

C:\>net start MSSQLSERVER
SQL Server (MSSQLSERVER) 服務正在啟動 .
SQL Server (MSSQLSERVER) 服務已經啟動成功。

C:\>

上面敝人實際測試過可行。

(完)


2025年3月28日 星期五

[研究]SQL Server 2019 如何查詢資料庫帳號變更稽核?

[研究]SQL Server 2019 如何查詢資料庫帳號變更稽核?

2025-03-27

SQL Server 2019 如何查詢資料庫帳號變更稽核?

ChatGPT 說:

在 SQL Server 2019 中,可以使用 SQL Server Audit 或 Default Trace 來查詢資料庫帳號變更的稽核記錄,以下是幾種方法:

********************************************************************************

2025-04-02 補

註:ChatGPT 說在 SQL Server 中,「伺服器稽核(Server Audit)」功能只有在 Enterprise 版和特定的高階版本(如 Datacenter 或 Developer)才可用,而 Standard 版及更低版本(如 Express)不支援 這個功能。敝人實際測試並非如此。根據下面網址,至少 SQL Server 2016 有 ,但沒提到要 Enterprise 才支援

https://learn.microsoft.com/zh-tw/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-2016

3.2. SQL Server Audit Support in Different Editions and Versions
https://logbinder.helpspot.com/index.php?pg=kb.page&id=79 
根據這篇,有更詳細說明

Edition \ VersionSQL Server 2008 and 2008 R2SQL Server 2012 and 2014SQL Server 2016* and 2017
EnterpriseServer- and database-levelServer- and database-levelServer- and database-level
DeveloperServer- and database-levelServer- and database-levelServer- and database-level
DatacenterServer- and database-levelN/AN/A
Business IntelligenceNoneServer-levelN/A
StandardNoneServer-levelServer- and database-level*
WebNoneServer-levelServer- and database-level*
ExpressNoneServer-levelServer- and database-level*

* Database-level auditing for Standard, Web and Express editions are available starting SQL Server 2016 SP1.

********************************************************************************

方法 1:使用 SQL Server Audit(推薦方式)

SQL Server Audit 提供較完整的稽核功能,可以記錄 登入帳號新增、刪除、變更密碼、授權變更 等操作。

1. 建立 Server Audit(伺服器級稽核)

首先,建立稽核物件,將稽核記錄存放於檔案中:

請先手動建立C:\AuditLogs\ 目錄

下圖。ChatGPT 原本給的指令如下,就算是 SQL Server 2019 Enterprise 也無法執行成功

CREATE SERVER AUDIT LoginAudit
TO FILE (FILEPATH = 'C:\SQLAudit\', MAXSIZE = 10MB, ROLLOVER = ON);
ALTER SERVER AUDIT LoginAudit WITH (STATE = ON);


敝人後來改成下面

CREATE SERVER AUDIT Audit_LoginChanges
TO FILE ( FILEPATH = 'C:\AuditLogs\', MAXSIZE = 10MB)  
WITH ( QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE );


(下圖)ChatGPT 說 SQL Server Audit 要 Enterprise 版才支援,但敝人實際測試下面指令 SQL Server 2019 Standard 也可以正常執行


2. 建立 Server Audit Specification(伺服器層級稽核規格)

設定要稽核的事件:

CREATE SERVER AUDIT SPECIFICATION Audit_Login_Changes_Spec
FOR SERVER AUDIT Audit_LoginChanges
ADD (SERVER_PRINCIPAL_CHANGE_GROUP)
WITH (STATE = ON);


(下圖)SQL Server 2019 Enterprise 和SQL Server 2019 Standard 都可以執行

其中 SERVER_PRINCIPAL_CHANGE_GROUP 會記錄登入帳號變更(如 CREATE LOGIN、ALTER LOGIN、DROP LOGIN 等)。

3. 啟動 Audit

ALTER SERVER AUDIT Audit_LoginChanges WITH (STATE = ON);  


(下圖)SQL Server 2019 Enterprise 和SQL Server 2019 Standard 都可以執行

4. 查詢 Audit 記錄

當帳號變更後,可以用以下 SQL 查詢:

SELECT event_time, action_id, succeeded, session_server_principal_name, server_principal_name, statement
FROM sys.fn_get_audit_file('C:\AuditLogs\*.sqlaudit', DEFAULT, DEFAULT)
ORDER BY event_time DESC;


(下圖)SQL Server 2019 Enterprise 和SQL Server 2019 Standard 都可以執行

其中

  •  event_time:事件時間
  •  action_id:動作類型(如 LGCR 表示 CREATE LOGIN,LGMD 表示 ALTER LOGIN)
  •  succeeded:是否成功(1 = 成功,0 = 失敗)
  •  session_server_principal_name:執行變更的帳號
  •  server_principal_name:被變更的帳號
  •  statement:執行的 SQL 指令

5. 刪除建立的東西

--步驟 1:停用 SERVER AUDIT SPECIFICATION
ALTER SERVER AUDIT SPECIFICATION Audit_Login_Changes_Spec WITH (STATE = OFF);

--步驟 2:刪除 SERVER AUDIT SPECIFICATION
DROP SERVER AUDIT SPECIFICATION Audit_Login_Changes_Spec;

--步驟 3:停用 SERVER AUDIT
ALTER SERVER AUDIT Audit_LoginChanges WITH (STATE = OFF);

--步驟 4:刪除 SERVER AUDIT
DROP SERVER AUDIT Audit_LoginChanges;


********************************************************************************

方法 2:使用 Default Trace(預設追蹤)

SQL Server 預設啟用了 Default Trace,可以用來查詢帳號變更。

查詢 Default Trace

SELECT 
    te.name AS EventName,
    t.DatabaseName,
    t.StartTime,
    t.ObjectName,
    t.ObjectType,
    t.EventClass,
    t.EventSubClass,
    t.TextData
FROM sys.fn_trace_gettable(
    (SELECT REVERSE(SUBSTRING(REVERSE(path), CHARINDEX('\', REVERSE(path)), LEN(path))) + 'log.trc' 
     FROM sys.traces WHERE is_default = 1), DEFAULT) t
JOIN sys.trace_events te ON t.EventClass = te.trace_event_id
WHERE t.EventClass IN (104, 105, 108) -- 104: Create Login, 105: Drop Login, 108: Alter Login
ORDER BY t.StartTime DESC;

其中

  • 104(Create Login):建立登入帳號
  • 105(Drop Login):刪除登入帳號
  • 108(Alter Login):修改登入帳號
  •  Default Trace 只保留短期記錄,如果需要長期記錄,建議使用 SQL Server Audit。

(下圖) 新增一個帳號後測試


********************************************************************************

方法 3:查詢 SQL Server Error Log(部分變更可查)

部分帳號變更(如 CREATE LOGIN 或 ALTER LOGIN)會記錄到 SQL Server Error Log。

請參考

[研究]SQL Server 2019 資料庫帳號登出登入稽核?
https://shaurong.blogspot.com/2025/03/sql-server-2019.html

這方法適用於 SQL Server 已啟用 LOGIN_CHANGE_PASSWORD 記錄的情況,但不如 SQL Server Audit 詳細。

********************************************************************************

總結

方法優點缺點
SQL Server Audit(推薦)最完整,支援長期記錄,可用 GUI 或 SQL 查詢需設定 Audit
Default Trace內建功能,不需額外設定只能查詢最近變更
SQL Server Error Log不需設定,適用於密碼變更查詢記錄不完整

如需完整監控帳號變更,建議使用 SQL Server Audit,可確保 符合稽核規範(如 GDPR、ISO 27001),並能長期儲存記錄。

(完)




2022年4月24日 星期日

[研究][ASP.NET]登入畫面表單美工設計(六)

[研究][ASP.NET]登入畫面表單美工設計(六)

2022-04-24

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

只是設計一個還可以看的畫面,筆記一下。

Login.html

<style>
	.css-form {
	color: #202124;
    font-size: 15px;
    line-height: 1.4286;
    padding: 20px 40px 36px;
    height: 340px;
	width: 370px;
	border-color:blue;
	border:1px solid blue;
	border-radius: 10px;
	margin:60px auto auto auto;	
	}
	.css-input {
     white-space: normal;
    border: 1px;
    display: block;
    line-height: 24px;
    min-width: 0%;
    outline: 1px;
    box-sizing: inherit;
    border-radius: 4px;
    color: #202124;
    font-size: 17px;
    height: 28px;
    margin: 1px 1px 0 1px;
    padding: 13px 15px 13px 15px;
    text-align: left;
	border: 1px solid;
    border-color:blue;
	width:330px;
	}
	.css-btn {
    font-size: 14px;
	border-color: #ffffff;
    background-color: #5555ff;
	color: #ffffff;
	width:117px;
	height:40px;
	border-radius:10px;	
	shadow:none;
	}
</style>
<div class="css-form">
	<h1><center>管理平台</center></h1>
	<div style="font-size: 17px; ">帳號</div>    
	<input id="userid" name="userid" type="email" class="css-input" placeholder="請輸入Email">
	<br \>
	<div style="font-size: 17px; ">密碼</div>    
	<input id="pw name="userid" type="password" class="css-input" placeholder="請輸入密碼">
	<br \><br \>
	<button type="submit" class="css-btn">登入</button>
	<button type="button" class="css-btn">忘記密碼</button>
	<button type="button" class="css-btn">註冊</button>
</div>

(下圖)結果


(完)

相關

[研究][ASP.NET]登入畫面表單美工設計(六)

[研究][ASP.NET]登入畫面表單美工設計(五)

[研究][ASP.NET]登入畫面表單美工設計(四)

[研究][ASP.NET]登入畫面表單美工設計(三)
https://shaurong.blogspot.com/2022/04/aspnet_14.html

[研究][ASP.NET]登入畫面表單美工設計(二)
https://shaurong.blogspot.com/2022/04/aspnet_12.html

[研究][ASP.NET]登入畫面表單美工設計(一)
https://shaurong.blogspot.com/2022/04/aspnet.html


[研究][ASP.NET]登入畫面表單美工設計(五)

[研究][ASP.NET]登入畫面表單美工設計(五)

2022-04-24

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

只是設計一個還可以看的畫面,筆記一下。

Login.html

<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset="UTF-8">
<style>
.css-form {
    border: 2px solid rgb(211, 215, 236);
    border-radius: 42px;
    box-shadow: rgb(45 64 150 / 6%) 0px 6px 0px;
    padding: 24px;
    position: relative;
	width:500px;
	height:350px;
	margin-left:auto;
	margin-right:auto;
}
.css-input {
    box-sizing: border-box;
    outline: none;
    width: 95%;
    padding: 18px 18px;
    font-size: 18px;
    line-height: 1.3;
    letter-spacing: -0.25px;
    font-weight: 600;
    color: rgb(44, 42, 80);
    border-radius: 42px;
    border: 2px solid rgb(211, 215, 236);
	margin:10px;
}
.css-btn {
    box-sizing: border-box;
    outline: none;
    width: 28%;
    padding: 18px 24px;
    font-size: 18px;
    line-height: 1.3;
    letter-spacing: -0.25px;
    font-weight: 600;
    color: rgb(44, 42, 80);
    border-radius: 42px;
    border: 2px solid rgb(211, 215, 236);
	margin:10px;
}
</style>
</head>
<body>
<div class="css-form">
<center><h1>管理平台</h1></center>
<input type="text" placeholder="電子郵箱" class="css-input">
<input type="password" placeholder="密碼" class="css-input">
<center>
<input type="button" class="css-btn" value="登入">
<input type="button" class="css-btn" value="忘記密碼">
<input type="button" class="css-btn" value="註冊">
</center>
</div>
</body>
</html>



(下圖)結果



(完)

相關

[研究][ASP.NET]登入畫面表單美工設計(六)

[研究][ASP.NET]登入畫面表單美工設計(五)

[研究][ASP.NET]登入畫面表單美工設計(四)

[研究][ASP.NET]登入畫面表單美工設計(三)
https://shaurong.blogspot.com/2022/04/aspnet_14.html

[研究][ASP.NET]登入畫面表單美工設計(二)
https://shaurong.blogspot.com/2022/04/aspnet_12.html

[研究][ASP.NET]登入畫面表單美工設計(一)
https://shaurong.blogspot.com/2022/04/aspnet.html


[研究][ASP.NET]登入畫面表單美工設計(四)

 [研究][ASP.NET]登入畫面表單美工設計(四)

2022-04-24

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

只是設計一個還可以看的畫面,筆記一下。

Login.aspx

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Login.aspx.cs" Inherits="WebApplication1.Login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style>
        input {
            /*background:#F8F8F8;*/
            padding: 10px;
            margin:5px;
            border-radius:5px;
        }
        input[type="submit"]{
            background:#74AC00;
            border-color:#74AC00;
            margin:5px;
            padding: 5px 40px 5px 40px;
            border-radius:10px;
            color:white;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <center>
            <h1>登入</h1>
            <fieldset style="border-radius: 10px; width:1px; background-color: #eeeeee;">
                <legend>帳戶資訊</legend>
            <asp:TextBox ID="TextBox1" runat="server" PlaceHolder="帳號"></asp:TextBox><br />
            <asp:TextBox ID="TextBox2" runat="server" PlaceHolder="密碼"></asp:TextBox><br />
            <asp:Button ID="Button1" runat="server" Text="登  入" /><br />
            <asp:HyperLink ID="HyperLink1" style="text-decoration: underline;" 
                runat="server">忘記密碼</asp:HyperLink>
                </fieldset>
        </center>
    </form>
</body>
</html>



(下圖)結果


(完)

相關

[研究][ASP.NET]登入畫面表單美工設計(六)

[研究][ASP.NET]登入畫面表單美工設計(五)

[研究][ASP.NET]登入畫面表單美工設計(四)

[研究][ASP.NET]登入畫面表單美工設計(三)
https://shaurong.blogspot.com/2022/04/aspnet_14.html

[研究][ASP.NET]登入畫面表單美工設計(二)
https://shaurong.blogspot.com/2022/04/aspnet_12.html

[研究][ASP.NET]登入畫面表單美工設計(一)
https://shaurong.blogspot.com/2022/04/aspnet.html


2022年4月14日 星期四

[研究][ASP.NET]登入畫面表單美工設計(三)

[研究][ASP.NET]登入畫面表單美工設計(三)

2022-04-14

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

只是設計一個還可以看的畫面,筆記一下。

Login.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" 
    Inherits="WebApplication1.Login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <link rel="shortcut icon" href="/favicon.ico" />
    <style>
        .LoginForm {
            padding: 10px;
            width: 500px;
            border: 4px solid #1199CD;
            margin-right: auto;
            margin-left: auto;
            background-color: #FFF;
            margin-bottom: 30px;
            border-radius: 12px;
            overflow: auto;
        }

        td {
            height: 25px;
            font-size: 20px;
            padding: 8px;
        }

        input {
            height: 20px;
            font-size: 20px;
            padding: 8px;
            border-radius: 5px;
        }
            input[type=button], input[type="submit"] {
                height: 40px;
                font-size: 16px;
                padding: 8px 15px 8px 15px;
                border-radius: 5px;
            }
    </style>
    <script type="text/javascript">
        function forgotPw() {
            var url = "forgot.aspx";
            //window.location(url);
            location.href = url;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table class="LoginForm">
                <tr>
                    <th colspan="2" style="font-size: xx-large">登入<br />
                        <hr />
                    </th>
                </tr>
                <tr>
                    <td>帳 號</td>
                    <td>
                        <asp:TextBox ID="TextBox1" AutoComplete="Off" required="required" runat="server"></asp:TextBox></td>
                </tr>
                <tr>
                    <td>密 碼</td>
                    <td>
                        <asp:TextBox ID="TextBox2" TextMode="Password" AutoComplete="Off" required="required" runat="server"></asp:TextBox></td>
                </tr>
                <tr>
                    <td>驗證碼</td>
                    <td>
                        <asp:TextBox ID="txtCheckCode" Width="100px" AutoComplete="Off" required="required" runat="server"></asp:TextBox>
                        <img src="/CheckImageCode.aspx" width="69" height="20" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style="text-align: center;">
                        <asp:Button ID="Button_Login" runat="server" Text="登入" />&nbsp;
                        <input id="Button1" type="button" value="忘記密碼" onclick="forgotPw()" />
                        <input id="Button2" type="button" value="說明" onclick="javascript:location.href='Doc.aspx'" />
                    </td>
                </tr>
            </table>
            <asp:Label ID="Label_Message" runat="server"></asp:Label>
        </div>
    </form>
</body>
</html>


注意,忘記密碼按鈕不要用 ASP.NET 控制項按鈕 Button,否則會觸發其他欄位 HTML5 的 required 必填欄位要求,使得無法轉向到其他網址,請直接用 HTML 的 Input(button) 搭配 JavaScript 才行。

(下圖)結果


注意:aspx.cs檔案中可能不要用下面這種彈出對話盒視窗
Response.Write("<script>alert('" + DateTime.Now.ToString() + " Captcha 圖形驗證碼錯誤');</script>");
否則驗證碼輸入錯誤,按下登入按鈕後,Input ( TextBox) 輸入框會扁掉,要用 ASP.NET 專用寫法,例如:Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('" + DateTime.Now.ToString() + " Captcha 圖形驗證碼錯誤');</script>");
敝人某方案會有此狀況,但在另一成方案中又很正常。

(完)

[研究][ASP.NET]登入畫面表單美工設計(三)

[研究][ASP.NET]登入畫面表單美工設計(二)
https://shaurong.blogspot.com/2022/04/aspnet_12.html

[研究][ASP.NET]登入畫面表單美工設計(一)
https://shaurong.blogspot.com/2022/04/aspnet.html


2022年4月12日 星期二

[研究][ASP.NET]登入畫面表單美工設計(二)

[研究][ASP.NET]登入畫面表單美工設計(二)

2022-04-12

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

只是設計一個還可以看的畫面,筆記一下。

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"
    CodeBehind="Default6.aspx.cs"
    Inherits="WebApplication1.Default6" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <%--bootstrap.css 非必須--%>
    <link href="Content/bootstrap.css" rel="stylesheet" />
    <link rel="shortcut icon" href="/favicon.ico" />
    <style>
        .LoginForm {
            padding: 10px;
            width: 400px;
            border: 4px solid #1199CD;
            margin-right: auto;
            margin-left: auto;
            background-color: #FFF;
            margin-bottom: 30px;
            border-radius: 12px;
            overflow: auto;
        }
    </style>
</head>
<body>
    <br />
    <form id="form1" runat="server">
        <div class="LoginForm">
            登入
                <hr />
            <p>
                帳  號:
                <input name="TextBox1" type="text" id="TextBox1" autocomplete="Off" /><br />
            </p>
            <p>
                密  碼:
                <input name="TextBox2" type="password" id="TextBox2" autocomplete="Off" /><br />
            </p>
            <p>
                驗證碼:
                <input name="txtCaptchaCode" type="text" id="txtCaptchaCode" autocomplete="Off" style="width: 60px;" />
                <img src="GetCaptchaCode.aspx" width="69" height="20" />
            </p>
            <p style="text-align: center">
                <input type="submit" name="Button1" value="登入" id="Button1" />
            </p>
            <span id="Label_Message"></span>
        </div>
    </form>
</body>
</html>



(下圖)結果

(下圖)結果 (有 bootstrap.css)
(完)

相關

[研究][ASP.NET]登入畫面表單美工設計(六)

[研究][ASP.NET]登入畫面表單美工設計(五)

[研究][ASP.NET]登入畫面表單美工設計(四)

[研究][ASP.NET]登入畫面表單美工設計(三)
https://shaurong.blogspot.com/2022/04/aspnet_14.html

[研究][ASP.NET]登入畫面表單美工設計(二)
https://shaurong.blogspot.com/2022/04/aspnet_12.html

[研究][ASP.NET]登入畫面表單美工設計(一)
https://shaurong.blogspot.com/2022/04/aspnet.html


[研究][ASP.NET]登入畫面表單美工設計(一)

[研究][ASP.NET]登入畫面表單美工設計(一)

2022-04-12

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

只是設計一個還可以看的畫面,筆記一下。

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <%--和 bootstrap.css 不相容--%>
    <%--<link href="Content/bootstrap.css" rel="stylesheet" />--%>
    <style>
        .submitButton {
            text-align: right;
            padding-right: 10px;
        }
    </style>
       <script>
        function ShowPwd() {
            var x = document.getElementById("TextBoxPassword");
if (x.type === "password") { x.type = "text"; } else { x.type = "password"; } } </script> </head> <body> <form id="form1" runat="server"> <h1>登入</h1> <div style="width: 20%;"> <fieldset style="border-radius: 10px; background-color: #eeeeee;"> <legend>帳戶資訊</legend> <p> <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">帳號:</asp:Label> <asp:TextBox ID="UserName" runat="server" PlaceHolder="請輸入" required="required"></asp:TextBox> </p> <p> <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password" Text="password">密碼:</asp:Label> <asp:TextBox ID="TextBoxPassword" runat="server" TextMode="Password" PlaceHolder="請輸入" required="required"></asp:TextBox> <%--<input type="checkbox" onclick="ShowPwd()">顯示密碼--%> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <asp:CheckBox ID="CheckBox1" OnClick="ShowPwd()" runat="server" Text="顯示密碼" /> </p> </fieldset> <p class="submitButton"> <asp:Button ID="LogOnButton" runat="server" CommandName="LogOn" Text="登入" />&nbsp; <asp:Button ID="Button_FogotPassword" runat="server" Text="忘記密碼" /> </p> </div> </form> <asp:Label ID="Label_Message" runat="server" Text=""></asp:Label> </body> </html>

結果

(完)

相關

[研究][ASP.NET]MasterPage中ContentPlaceHolder內的 JavaScript「顯示密碼」功能
[研究][ASP.NET]JavaScript 抓取 ContentPlaceHolder 中 ASP.NET 控制項的 ID
https://shaurong.blogspot.com/2022/04/aspnetmasterpagecontentplaceholder.html

[研究][JavaScript]切換顯示和隱藏密碼
http://shaurong.blogspot.com/2019/02/javascript.html

[研究][ASP.NET]讓超連結或 LinkButton 看起來像是按鈕
https://shaurong.blogspot.com/2022/04/aspnet-linkbutton.html

[研究][ASP.NET]登入畫面表單美工設計(六)

[研究][ASP.NET]登入畫面表單美工設計(五)

[研究][ASP.NET]登入畫面表單美工設計(四)

[研究][ASP.NET]登入畫面表單美工設計(三)
https://shaurong.blogspot.com/2022/04/aspnet_14.html

[研究][ASP.NET]登入畫面表單美工設計(二)
https://shaurong.blogspot.com/2022/04/aspnet_12.html

[研究][ASP.NET]登入畫面表單美工設計(一)
https://shaurong.blogspot.com/2022/04/aspnet.html