防止使用后退按钮查看上一页的信息

时间:2019-04-03 20:49:39

标签: c# asp.net .net security webforms

我有一个表单,用户可以在其中输入输入。我想防止其他人使用“后退”按钮返回并查看第一个人输入的内容。

我意识到这仅在相同的浏览器等上是一个问题,但有时可能是一个问题。

我同时尝试了Server.Transfer()Response.Redirect(),但都没有阻止。我还尝试将事件代码中后面的提交按钮的事件处理程序中的文本框(asp:TextBox)文本设置为空,但是由于传输覆盖了该问题,因此它仍然不起作用。

WebForms技术。这是给定的。我正在代码隐藏中做所有事情,并且如果可能的话,也希望从那里解决这个问题。

1 个答案:

答案 0 :(得分:1)

从后端清除代码中的数据将为时已晚,因为正如您所说的那样,重定向将在更改发生之前发生。

相反,我建议您在前端使用Javascript,订阅window.onbeforeunload事件,并在重定向发生之前使用该事件清除页面。

示例实现如下所示:

window.addEventListener("beforeunload", function() {
    var inputs = document.getElementsByTagName("input");

    //Iterate all <input> elements on the page.
    for(var i = 0; i < inputs.length; i++) {
        var input = inputs[i];

        //Ignore all elements that don't have type="text" or type="password" (we don't want to clear buttons, etc.).
        if(["text", "password"].indexOf(input.type.toLowerCase()) < 0) { continue; }

        //Clear the element's value.
        input.value = "";
    }
});

我做了一个简短的测试:在重定向之前,您会注意到文本框已清除,当您通过按“后退”按钮返回时,文本框仍然为空。