【发布时间】:2017-07-08 14:52:50
【问题描述】:
当我点击网页上的某个按钮时,我曾经通过 JS/jQuery 调用我的一些 Servlet,如下所示:
btnComment.addEventListener("click", sending);
function sending() {
btnComment.disabled = true;
$.post('/Project/AddCommentServlet', {
id_pic: idPic.value,
text: textComment.value
});
}
所以我使用 POST 调用 Servlet“AddCommentServlet”,发送 2 个参数。
我已禁用通过 GET 访问该 Servlet(如果发生,则重定向到错误页面),但是……这是一种安全的工作方式吗?能不能换个方式?
如果这个人知道 servlet 的名称和使用的参数,我不希望任何人都可以通过机器人或类似的东西访问 servlet。有人可以编写一个程序来攻击它,知道端点和参数,不是吗?
谢谢!
【问题讨论】:
-
嗯,从JS调用servlet和用表单提交数据没有区别:任何人都可以看到你的页面指向的servlet,以及传递的参数,所以你需要做的就是保护您的 servlet 并进行所有必要的检查以避免有人破坏您的应用程序(即防止 SQL 注入、将上传的文件重命名为操作系统安全和应用程序安全的文件名等)。
-
您可以按照 OAuth2 协议保护您的端点,但您希望使用类似 Spring and spring security 的框架来保护您的端点。其他选项是使用sessions 和验证码。你在这里要求很多,祝你好运。顺便说一句:要“回答”您的问题,是的,使用 JS 调用 servlet 是安全的(并且实际上是预期的)如果您的端点是安全的,但保护它们的过程不是我想解释的事情
-
非常感谢你们俩。你的话让我更明白了!干杯!
标签: javascript java post servlets