html - 如何交叉检查html中的提示输入
问题描述
所以我正在为我的学校做一个项目。我会事先声明,因为我知道从项目的 stackoverflow 等外部帮助中获得不公平的优势绝对不是一件好事,但我真的需要这个帮助。
所以我正在使用 mvc 做一个 ASP.NET 核心 Web 应用程序,并且我正在尝试创建一个管理门户,它验证提示输入并重定向到管理页面。包括验证和重定向在内的所有其他操作都可以正常工作,但我面临着一个严重的安全问题。
我将首先在这里粘贴我的代码,简要介绍我到目前为止所做的事情
AdminPortal.cshtml:
@{
ViewData["Title"] = "Admin Portal";
}
<body>
<button onclick="Prompt()" class="btn btn-primary btn-block">Admin access</button>
<script>
function Prompt() {
let Message = prompt("Admin access is strictly restricted for public users.\nPlease maintain a healthy enviroment in this website.\nPlease input the admin password to continue!")
if (Message != "ZdIoN1Fo0)(12AsjH") {
window.location.href = "/"
} else {
window.open("AdminPage");
}
}
</script>
</body>
AdminPage.cshtml:
@{
ViewData["Title"] = "Admin Page";
string[] TableHeaders = new string[]
{
"First name"
,"Last name"
,"Email"
,"Phone Number"
};
Layout = "/Views/Shared/_Layout.cshtml";
}
<style>
body{
display:flex;
background:#222831;
align-items:center;
justify-content:center;
height:100vh;
color:snow;
}
.table{
background:#fff;
max-height:470px;
overflow-y:auto;
box-shadow:0px 10px 50px 0px rgba(0,0,0,0.5);
border-radius:10px;
}
table{
width:100%;
text-align:center;
border-collapse:collapse;
}
table thead th,
table tbody td{
padding:15px;
border:none;
font-weight:600;
font-size:14px;
}
table thead th{
background: #1861ac;
color:snow;
font-size:16px;
position:sticky;
top:-1%;
}
table tbody td {
border-bottom: 1px solid rgba(0,0,0,0.1);
}
nav{
display:none !important;
}
</style>
<div class="table">
<table class="table table-bordered table-hover">
<thead>
<tr>
@{
foreach (var head in TableHeaders)
{
<th>
@head
</th>
}
}
</tr>
</thead>
<tbody>
@{
if (Model != null)
{
foreach (var Acc in Model)
{
<tr>
<td>@Acc.Fname</td>
<td>@Acc.Lname</td>
<td>@Acc.Email</td>
<td>@Acc.PhoneNO</td>
</tr>
}
}
}
</tbody>
</table>
</div>
好的,如您所见,管理员密码ZdIoN1Fo0)(12AsjH
对任何在管理门户页面上检查元素的用户都是可见的,这打破了整个仅管理员访问的概念。我想知道如何将密钥隐藏在公众的视线之外,并且可能仍然可以验证。
另外,关于安全问题,我想加入另一个功能,它只允许用户通过管理门户页面进入管理页面。我该怎么做?我考虑过使用返回值进行验证,但不知道该怎么做。
来之前问了朋友,他们说我不应该在前端认证,而是在后端做;我不知道;我的 homecontroller.cs 是我的后端吗?不知道如何从那里进行验证。
我也做了一些研究,并认为也许https://stackoverflow.com/a/14774470/13734672可能会在某些方面派上用场,但仍然没有找到实现它的方法。
除了现有的问题,我想知道是否可以在重定向window.location.href = "/"
中添加一个功能,比如另一个提示“未经授权的尝试!”,当重定向到 index.cshtml 时是否可能?
任何帮助将不胜感激 :)
解决方案
是的,您的朋友是对的,我们不应该从客户端对用户进行身份验证,因为一切都是在客户端以某种方式完成的,或者任何最终用户都可以轻松找到任何其他方式。ASP.NET 提供了两个特性来实现这一点。一种关于“你是谁?作为本网站的有效用户”的身份验证。二、授权“你有什么权利在现场执行任何操作?”
由于它是学术项目,我将为您提供具有示例实现的链接 https://www.codeproject.com/Articles/98950/ASP-NET-authentication-and-authorization-2
并回答您关于重定向的最后一部分。一旦您实现了身份验证和授权并配置了哪些用户/角色访问了哪些页面,它将重定向到登录页面。如果您希望自定义页面重定向,例如 accessdenide 等。您可以使用 web.config 来实现
推荐阅读
- javascript - 如何使用多维数组列表突出显示 AngularJs 1.4.8 中的搜索文本?
- python - 从用户那里获取输入,然后使用子进程启动一个进程
- python-3.x - 列出两个数据框中不匹配的行
- svg - 带有 c 和长数字序列的 SVG 路径。这是什么意思
- php - 对 SOAP Web 服务的 PHP Curl 请求的错误请求
- c# - 基于角色授权的绑定菜单asp.net c#
- django - Django html表单:使用get请求获取数据并传递给另一个视图
- eclipse - 在“任务列表索引器”期间发生内部错误。对于输入字符串:“1 2”
- python - 如何在plotly中绘制饼图?
- python - Python所需的时间