【问题标题】:Calling servlets using JS is safe?使用 JS 调用 servlet 安全吗?
【发布时间】: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


【解决方案1】:

没有办法保护公共 servlet。

如果您担心礼貌的机器人,您可以使用robot.txt

如果您担心敌对机器人,我现在唯一的方法就是添加某种recaptcha。

【讨论】:

  • Servlet 往往只是一个 Web 服务。有一些用于保护 Web 端点的协议。 OAuth2是实用标准
猜你喜欢
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 2021-12-04
  • 2021-03-11
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多