问题标签 [rest-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
65 浏览

javascript - 客户端 API 安全性

我在我的网站上实现了 Olark实时聊天,我所要做的就是实现以下 js 代码。

我想知道什么技术使用第三方 JavaScript 插件,如OlarkDisqus和类似公司?

如您所见, olark.identify()在我的网页上是公开的,您可以通过“检查元素”找到它。那么他们如何处理安全性并退回不需要的请求呢?

0 投票
1 回答
123 浏览

android - 如何在后端验证请求

我正在创建一个支付 android 库(aar),我必须确保我收到的所有请求back-end都来自我的库而不是假库。

我该怎么做?

0 投票
1 回答
1284 浏览

android - 无需登录身份验证即可在 Spring Boot 中保护 REST API

我目前正在构建一个 android 应用程序和一个后端 REST api。登录仅在 android 部分使用 fb 和 google 登录。

API 都是公开访问的。我应该如何保护我的后端 api,以便只有 android 应用程序可以访问它?

Basic Auth 和 OAUTH 甚至是不可能的,因为它需要 android 端的硬编码密码。

在此先感谢您的帮助。

0 投票
1 回答
792 浏览

rest - 使用 OAuth2 保护单体私有 REST api?

也许这个问题似乎是基于意见的,但我在决定保护 RESTful API时遇到了困难。

首先,我的用例:
我的应用程序非常简单:前端是使用 React.js(用于浏览器客户端)编写的,它将使用 RESTful API 从数据库(或其他东西)获取数据。API 是使用Spring 框架构建的。

此 API 不是公共 API,它只有一个客户端(目前,以后将是移动应用程序)。

现在让我们来谈谈安全问题。显然,我想保护我的 API,我使用 Spring-security 作为这项工作的工具。在学习的最初几天,我只知道基本身份验证。但是,当我继续阅读更安全的选项时,我学到了一些新奇的术语:

  1. 基于令牌的身份验证,使用 JWT
  2. OAuth2
  3. OpendId 连接

当我阅读更多来自Auth0Okta等的博客时,我把一切都搞砸了。这让我三思而后行,是否应该使用 OAuth 来保护 REST API(不公开)。此外,几乎所有关于 OAuth 的博客都以社交登录为例。这让我更加困惑,OAuth 是为了让第三方应用程序访问您的 API。就是这样,不适用于我的用例。

然后我从一些渠道和博客中询问了一些专家,一些人说基本身份验证对于安全性来说已经足够了(使用 https),我应该避免使用 OAuth 来满足这么小的要求。其他人则相反,称 Basic-Auth 存在安全漏洞。

让我们考虑一下 OAuth 对我来说是完美的,但在这种情况下,我的授权服务器将驻留在哪里?因为教程仅通过将代码保持在同一层来解释授权服务器。没有单独的项目或其他东西。

JWT 对我的用户案例也有一些负面评价:

  1. 它们不能被撤销,只会自行过期。不是没有安全感吗?
  2. 与会话令牌或 cookie 相比,它们的大小很大
  3. 验证的高计算成本

我真的需要更多关于这方面的建议,这已经花了我很多周的时间。

谢谢。

0 投票
1 回答
3019 浏览

java - 如何在没有弹簧安全的情况下使用 api 密钥保护 rest api

我有一个 rest api MyRestApi.war,它是一个 spring boot 和 spring mvc 项目。

还有另一个 web 项目A.war是一个普通的 spring 项目。它的前端如javascript和后端java code如需调用MyRestApi。用户需要登录A.war才能使用。

我不需要对 进行权限控制MyRestApi,只有用户登录才能通过前端和后端A.war访问MyRestApiA.war

有一些解决方案,例如API key, 。jwtOAuth

我想尝试这三种方法,然后选择一种。

但是当我搜索类似的东西时api key authentication,他们都习惯spring security这样做。

那么如何在MyRestApi没有弹簧安全的情况下使用 api 密钥进行保护。

0 投票
1 回答
66 浏览

rest - URL 中带有 .bat/.exe 的用户名 - 替代

我正在使用一个 URL,它接受 GET 调用的用户名。例如:https ://example.com/details/ <用户名>

但是,如果用户名包含“.bat”或“.exe”(例如:mm.baty - https://example.com/details/mm.baty),则可能存在一些安全问题。

在不影响安全问题的情况下,通过 URL 发送用户名有哪些建议。

谢谢您的帮助!

0 投票
1 回答
954 浏览

spring-boot - Spring 具有两种安全配置 - 失败的 API 登录重定向到表单登录页面。如何改变?

我有一个带有两种安全配置(两个WebSecurityConfigurerAdapter)的 Spring Boot 应用程序,一种用于具有“ /api/**”端点的 REST API,另一种用于所有其他端点的 Web 前端。安全配置在 Github 上,这里有一些相关部分:

JWTAuthenticationFilter是一个自定义子类,它处理对 REST API的UsernamePasswordAuthenticationFilter登录尝试(通过带有 JSON 正文的 HTTP POST /api/login),如果成功,则在“授权”标头中返回 JWT 令牌。

所以这是问题所在:失败的登录尝试/api/login(使用错误的凭据或缺少 JSON 正文)正在重定向到 HTML 登录表单/api/login。对其他“”端点的未经身份验证的请求会/api/**产生一个简单的 JSON 响应,例如:

未经身份验证的用户尝试访问其他受保护的 URL(不以“ /api/”开头)重定向到登录表单/login,这是所需的行为。但我不希望 API 调用/api/login重定向到该表单!

如何为失败的 API 登录编写正确的行为? 这是为该过滤器添加新处理程序的问题吗?或者可能为我已经定义的某些行为添加排除项?

有关异常和处理的更多详细信息:

我查看了日志,针对错误凭据或格式错误的 JSON 引发的异常是org.springframework.security.authentication.AuthenticationException. 日志显示,例如:

当我访问另一个 URL 时,例如一个不存在的 URL,例如/api/x,它看起来非常不同。它非常冗长,但看​​起来服务器正在尝试重定向/error并且没有发现它是授权 URL。有趣的是,如果我在 Web 浏览器中尝试此操作,我会使用我的自定义错误页面 (error.html) 格式化错误,但如果我使用 Postman 访问它,我只会收到一条 JSON 消息。日志示例:

所以看起来我可能需要做的是为 REST API 配置“身份验证失败处理程序”以转到“/error”而不是“/login”,但仅适用于/api/**.

0 投票
5 回答
3885 浏览

java - 使用https在java中休息api

当我Restservices在 java 中使用等创建时GETPOST我要求他们使用 http protocol. 一旦我使用 https,它就会出错。

例如: http://localhost:8080/demorest/webapi/aliens工作正常。

但是当我使用相同的查询时https

我收到错误site can not provide secured connection

需要进行哪些修改才能使其与https.

0 投票
2 回答
110 浏览

oauth - 使用 Oauth 2.0 保护 API

我正在创造新产品。为此,我必须使用可用的安全功能。我应该使用Oauth2orJson web token吗?哪个更好,在什么情况下应该使用这些?

0 投票
2 回答
3253 浏览

oauth-2.0 - 这是否可以使用 cognito 的授权代码授权类型作为 api-gateway 中的授权人?

我想知道在保护 API 网关中是否有任何方法或可能性将授权代码授予类型实现为授权器?正如所搜索的,“授权码”授权类型最推荐用于保护 API。我在下面的文章中找到了解释使用 cognito 'client credentials' 作为授权类型来保护 api 网关的文章,

https://medium.com/@awskarthik82/part-1-securing-aws-api-gateway-using-aws-cognito-oauth2-scopes-410e7fb4a4c0

我尝试了类似的方法来创建 API 网关,我在其中完成了以下集成:

  1. 在 cognito 中创建用户池“UI Hosted”,授权类型为“授权码”

  2. 添加资源服务器

  3. 选择默认范围,因为我不想添加任何新范围

  4. 关联的回调 uri

现在我可以访问登录页面进行注册和登录,它会在回调 uri 中返回“授权码”

在 API 网关中

  1. 我创建了一个 API 并集成了一些模拟响应

  2. 在 api 网关中作为 Authorizer 附加上面的用户池并部署

现在,当我在不传递令牌的情况下调用 api 时,它返回“未授权”

所以我使用下面的方法从 cognito 中提取访问令牌

如何使用 python 以编程方式交换授权代码以从 cognito 获取访问令牌

并使用邮递员在 api 标头中传递了令牌,但我仍然收到“未经授权”的响应

所以想知道在 api 网关中需要做什么才能验证令牌或这种方法出了什么问题..?

感谢是否有人可以提供帮助?

谢谢