Jquery 使用QueryString和ajaxget后的Web应用程序安全问题
我已经为一个客房预订web应用程序编写了以下代码。然而,由于我在这方面是新手,我不能完全理解代码是否“安全” 所以我的问题是:在我从QueryString接收到参数后,以下代码是否会被用户操纵,例如Google Chrome的Inspect元素,进入学生使用其他人凭证的状态 请假设我将收到加密的QueryString,并且我假设我可以在加载视图之前在控制器中解密它 观点:Jquery 使用QueryString和ajaxget后的Web应用程序安全问题,jquery,ajax,Jquery,Ajax,我已经为一个客房预订web应用程序编写了以下代码。然而,由于我在这方面是新手,我不能完全理解代码是否“安全” 所以我的问题是:在我从QueryString接收到参数后,以下代码是否会被用户操纵,例如Google Chrome的Inspect元素,进入学生使用其他人凭证的状态 请假设我将收到加密的QueryString,并且我假设我可以在加载视图之前在控制器中解密它 观点: <script> var scheduler = $("#scheduler4").data("kend
<script>
var scheduler = $("#scheduler4").data("kendoScheduler");
/* Get QueryString and search for student in external URL */
$(document).ready(function () {
var url = document.URL;
var nameIndex = url.indexOf("name=");
var name;
var emailIndex = url.indexOf("email=");
var email;
if (emailIndex > -1 && staffIndex == -1) {
name = url.substr((nameIndex + 5), emailIndex - (nameIndex + 5 + 1));
email = url.substr((emailIndex + 6));
email = email.substr(0, (email.length - 4)) + "@@email.com";
/* Check student directory to see if this email exists */
var url = '@Url.Action("CheckStudentDirectory", "Home")';
// alert(email);
var data = { name: name, email: email };
$(".loading-overlay").show();
$.get(url, data)
.done(function (response, status, jqxhr) {
if (response.exists === true) {
$.ajax({
type: 'GET',
url: '@Url.Action("StudentScheduler", "Home")',
success: function (data) {
$('#incomingscheduler').html(data);
}
});
}
.fail(function (jqxhr, status, errorThrown) {
/* problem with XML file at CheckDirectory */
alert("Something went wrong with authentication");
.complete(function () {
$(".loading-overlay").hide();
});
}
});
</script>
<body>
<!-- Scheduler-->
<div id="incomingscheduler">
<!-- Schedulers will be loaded in here -->
</div>
</body>
var scheduler=$(“#scheduler4”).data(“kendoScheduler”);
/*获取查询字符串并在外部URL中搜索学生*/
$(文档).ready(函数(){
var url=document.url;
var nameIndex=url.indexOf(“name=”);
变量名;
var emailIndex=url.indexOf(“email=”);
var电子邮件;
如果(emailIndex>-1&&staffIndex==-1){
name=url.substr((nameIndex+5),emailIndex-(nameIndex+5+1));
email=url.substr((emailIndex+6));
email=email.substr(0,(email.length-4))+“@@email.com”;
/*检查学生目录以查看此电子邮件是否存在*/
var url='@url.Action(“CheckStudentDirectory”,“Home”);
//警报(电子邮件);
var data={name:name,email:email};
$(“.loading overlay”).show();
$.get(url、数据)
.done(功能(响应、状态、jqxhr){
if(response.exists==true){
$.ajax({
键入:“GET”,
url:'@url.Action(“StudentScheduler”,“Home”),
成功:功能(数据){
$('#incomingscheduler').html(数据);
}
});
}
.fail(函数(jqxhr、状态、错误抛出){
/*CheckDirectory中的XML文件有问题*/
警报(“身份验证出现问题”);
.完成(功能(){
$(“.loading overlay”).hide();
});
}
});
在控制器级别执行此操作..如“
此操作自动从查询字符串中获取名称和电子邮件,但查询字符串参数名称和操作的参数名称应相同
用户是否可以操纵以下代码…使其进入学生使用其他人凭据的状态
是--通过查询字符串或表单post发送到应用程序的任何参数都可以由用户进行操作。加密不会保护您免受未经授权的访问
始终验证服务器上的用户输入。您需要在服务器上验证经过身份验证的用户是否真正拥有名称和电子邮件或任何其他敏感资源
此外,.我可以执行以下操作吗?(1)接收加密的查询字符串(2)通过AJAX调用将其转到控制器进行解密(3)在控制器中保存电子邮件和用户姓名(4)返回视图(5)在创建新预订期间,检查服务器端的电子邮件和名称。假设一个用户为另一个用户复制了加密的querystring。您如何知道它是合法的?我无法知道它,但从表面上看,it部门不想为我创建Windows服务来进行正确的身份验证。换句话说,这是我的但最后,我想,如果我创建的查询字符串在每天结束时过期,那么它可能会增加情况的安全性。
public ActionResult Test(string email,string name)
{
//do your stuff
}