如何通过XMLHttpRequest确保对Java Servlet的Javascript调用的安全,从而在手动将url输

How can I secure a Javascript call to a Java Servlet via XMLHttpRequest such that it cannot be used if the url is manually entered into a browser?

本文关键字:url 调用 确保 XMLHttpRequest 何通过 Java Javascript Servlet 安全      更新时间:2023-09-26

我目前有一个使用javascript的网页,它可以执行以下操作:

function callSomething(parm) {
    req = false;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e) {
            req = false;
        }
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                req = false;
            }
        }
    }
    if (req) {
        var url_str = "/Servlet?parm=" + parm;
        req.open("GET", url_str, false);
        req.onreadystatechange = processReqChange;
        req.send(null);
        // process the response
    }
    return something;
}

我担心的是,如果有人手动输入完整的URL(例如"http://somesampleserver.com/Servlet?parm=something")在浏览器窗口中,也会显示响应。我如何防止这种情况发生?我只希望代码能够获得响应。

听起来您想检查这是否是XHR请求。您可以检查X-Requested-WithHeader

Boolean isXHR = "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));

更多关于

似乎会话框架可以提供帮助。就像Shiro&弹簧安全。使用这些框架,只有有效的会话连接才能访问资源(URL)。否则,它将自动重定向到登录页面(自定义)。