gpt4 book ai didi

javascript - 如何使用 Angular 和 webapi 或 mvc 处理测验应用程序中的安全性?

转载 作者:行者123 更新时间:2023-11-28 04:55:48 25 4
gpt4 key购买 nike

我计划创建一个测验应用程序,在测验应用程序中,我保存数据的地方更好,这意味着如果我将数据存储在服务器端的内存或数据库中,同时将数据发送到客户端,在http响应答案中可以看到哪个导致json劫持利用应用程序。

如果不想在客户端显示答案,如何处理?在性能方面这是更好的方法。例如)如果我有 5 个问题,他们回答了 5 个问题,最后有完成按钮,点击完成按钮时,发送到服务器端,如何向客户端显示分数。

其他

2)对于每个回答的请求,必须在服务器端检查它更好吗?

否则还有其他办法吗?

方法一:

public JsonResult QuizQuestionAns()  
{
List < Questionsoptions > obj = new List < Questionsoptions > ();
obj.Add(new Questionsoptions
{
Question = "What is 12+20?", OpA = "21", OpB = "32", OpC = "41", Ans = "B"
});
obj.Add(new Questionsoptions
{
Question = "What is 12+12?", OpA = "10", OpB = "12", OpC = "24", Ans = "C"
});
obj.Add(new Questionsoptions
{
Question = "What is 12+24?", OpA = "36", OpB = "24", OpC = "12", Ans = "A"
});
return Json(obj, JsonRequestBehavior.AllowGet);
}

Angular :

$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {

///响应得到答案//攻击

  }, function errorCallback(response) {

});

外部 Json:

**如果我将问题存储在 Json 中,它的安全性如何?**

$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// In the response we will get the object and attack
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});**

**

方法3:

如果将其存储在应用程序内部的Object中,也可以在客户端看到。

如何制作更安全的测验应用程序,而无需在客户端看到答案。

在下面的示例中,将问题和答案存储在数组中:任何人都可以看到它。

angular.module('quiz.service', []);
angular.module('quiz.directive', []);
angular.module('quiz.filter', []);

angular.module('quiz', ['quiz.service','quiz.directive','quiz.filter']);

var QuizController = function($scope){

"use strict";
$scope.questions = [
{"questionText": "Why is the sky blue?", "answers": [
{"answerText":"blah blah 1", "correct": true},
{"answerText":"blah blah 2", "correct": false},
{"answerText":"blah blah 3", "correct": false}
]},
{"questionText": "Why is the meaning of life?", "answers": [
{"answerText":"blah blah 1", "correct": true},
{"answerText":"blah blah 2", "correct": false},
{"answerText":"blah blah 3", "correct": false}
]},
{"questionText": "How many pennies are in $10.00?", "answers": [
{"answerText":"1,000.", "correct": true},
{"answerText":"10,000.", "correct": false},
{"answerText":"A lot", "correct": false}
]},
{"questionText": "What is the default program?", "answers": [
{"answerText":"Hello World.", "correct": true},
{"answerText":"Hello Sunshine.", "correct": false},
{"answerText":"Hello my ragtime gal.", "correct": false}
]}
];
$scope.answers ={};
$scope.correctCount = 0;
$scope.showResult = function(){
$scope.correctCount = 0;
var qLength = $scope.questions.length;
for(var i=0;i<qLength;i++){
var answers = $scope.questions[i].answers;
$scope.questions[i].userAnswerCorrect = false;
$scope.questions[i].userAnswer = $scope.answers[i];
for(var j=0;j<answers.length;j++){
answers[j].selected = "donno";
if ($scope.questions[i].userAnswer === answers[j].answerText && answers[j].correct===true){
$scope.questions[i].userAnswerCorrect = true;
answers[j].selected = "true";
$scope.correctCount++;
}else if($scope.questions[i].userAnswer === answers[j].answerText && answers[j].correct===false){
answers[j].selected = "false";
}
}
}

//console.log($scope.answers);

};
};

enter image description here

我可以使用 Json 填充来避免这种情况吗?还有什么办法可以预防吗?

最佳答案

如果您需要向用户显示答案是否正确,请将当前问题的答案发送到服务器,并发送下一个问题和结果作为响应。这样,他们也不太可能通过下载完整的问题列表并在找到答案后进行测验来作弊,以防测验有时间限制。

如果您不需要向用户显示答案是否正确,只需立即显示下一个问题并将答案发送到后台服务器即可。

关于javascript - 如何使用 Angular 和 webapi 或 mvc 处理测验应用程序中的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42565761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com