java如何防止从其他网站调用我的servlet
好的,我有一个像这样的简单servlet
public class SimpleServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println(req.getParameter("name"));
}
}
假设在我使用这个URL/simple_servlet时触发它。做
我如何确保这个servlet只有在从我的网站而不是其他网站调用时才能工作。换句话说,有一些请求参数(不能伪造)让我知道
# 1 楼答案
简单地说,你可以通过以下方法来预防
POST
方法,因为更难破解Diff GET vs POSTFilter
# 2 楼答案
您可以使用客户端和服务器之间的会话来检测第一次
# 3 楼答案
我能想到的唯一方法是,从网站在服务器上生成一个令牌(例如JSESSIONID上的MD5),然后将该令牌传递回servlet。只有您的网站知道令牌,其他网站无法窃取cookie(包括JSESSIONID)并从外部计算令牌。这也应该不会受到XSRF攻击