标签: websecurity

了解 Keycloak Adapter(Spring-Security & Spring Boot)会话要求

对于活跃开发的软件,我们使用 Spring Boot(带有 Spring Security)和 Keycloak Adapter。

目标是:

  • 需要对所有端点进行有效的身份验证,除了那些带有注释的端点@Public(参见代码片段)(这有效)
  • 身份验证必须通过 OAuth - 客户端直接从 Keycloak 获取令牌,并且 Spring Security + Keycloak 适配器确保它是有效的
  • 可选地,还支持基本身份验证(可以将 Keycloak 适配器配置为执行登录并使其看起来像其余代码的常规令牌身份验证)(这也适用)

一切正常,但我在理解一些细节时遇到了一些问题:

  • KeycloakWebSecurityConfigurerAdapter能够CSRF保护。我认为这样做只是为了它可以注册自己的匹配器以允许来自 Keycloak 的请求
  • 它启用会话管理并需要一些相应的 bean
  • 即使使用令牌身份验证发出请求,JSESSIONID也会返回 cookie

根据我的理解:

  • 由于使用了无状态令牌身份验证,因此不需要会话(那么为什么要KeycloakWebSecurityConfigurerAdapter启用它)。这只是BASIC Auth部分吗?
  • 由于会话已启用,CSRF确实需要保护 - 但我首先不想要会话,然后 API 就不需要CSRF保护,对吗?
  • 即使我http.sessionManagement().disable()super.configure(http)通话后设置了JSESSIONIDcookie(所以这是从哪里来的?)

正如代码片段中所述,SessionAuthenticationStrategy由于我们使用了AuthorizationKeycloak的一部分并且应用程序是 a Service Account Manager(因此管理这些资源记录),因此一次未设置为 null 。

如果有人可以解决问题,那就太好了。提前致谢!

@KeycloakConfiguration
public class WebSecurityConfiguration extends …
Run Code Online (Sandbox Code Playgroud)

csrf spring-security keycloak websecurity

5
推荐指数
1
解决办法
3283
查看次数

添加嵌入式谷歌地图时 console.log 中出现警告

我想在我的网络应用程序中添加谷歌地图(嵌入)地图。我正在构建 Angular 8 并使用内置服务器,但仍在 console.log 中显示警告

A cookie associated with a cross-site resource at https://google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review coo...
Run Code Online (Sandbox Code Playgroud)

我在 ngOnInit 方法的代码中所做的事情,我已经添加了这个

    this.cookieService.set('cross-site-cookie',"bar");
    this.cookieService.set('SameSite','SameSite=None; Secure');
Run Code Online (Sandbox Code Playgroud)

上面的代码我使用名为 ngx-cookie-service 的 npm 包。另外,当我自己参考这个网站时

https://github.com/GoogleChromeLabs/samesite-examples/blob/master/javascript.md
Run Code Online (Sandbox Code Playgroud)

我不确定我做对了还是错了。我所做的只是使用我所在的谷歌地图的“复制链接”完全复制。如何解决这个问题。

html javascript cookies angular websecurity

5
推荐指数
1
解决办法
2645
查看次数

如何防止脚本注入攻击

介绍

这个话题一直是StackOverflow和其他许多技术论坛上许多问题和答案的祸根。然而,他们大多是针对具体情况更糟糕:“在所有”脚本注射预防通过安全dev-tools-console,或者dev-tools-elements甚至address-bar被说成是“不可能”来保护。这个问题是为了解决这些问题,并随着技术的改进(或发现新的/更好的方法来解决与script-injection攻击有关的浏览器安全性问题),作为当前和历史的参考。

顾虑

有很多方法可以“实时”提取或操作信息。特别是,无论SSL / TLS为何,截取从输入中收集的信息(要传输到服务器)都非常容易。

截取示例

在这里看看 不管它有多“粗鲁”,都可以轻松地使用该原理来制作模板,然后将其复制并粘贴到eval()浏览器控制台中,以进行各种讨厌的事情,例如:

  • console.log()通过XHR拦截传输中的信息
  • 操作POST-data,更改用户引用,例如UUIDs
  • GET通过检查JS代码将目标服务器替代(&张贴)请求信息提供给中继(或获取)信息,cookies以及headers

对于未经训练的人来说,这种攻击“似乎”微不足道,但是当高度动态的界面受到关注时,这很快就变成了一场噩梦-等待被利用。

我们都知道“您不能信任前端”,服务器应该对安全负责;但是-我们心爱的访客的隐私/安全又如何呢?许多人使用JavaScript创建“快速应用程序”,要么都不知道(或不关心)后端安全性。

确保前端和后端的安全对普通攻击者来说是非常艰巨的,而且减轻了服务器负载(在许多情况下)。

努力

Google和Facebook都采取了一些缓解这些问题的方法,并且它们都可以工作。因此,这不是“不可能”的,但是它们非常特定于各自的平台,要实现该功能,需要使用整个框架以及大量工作-仅覆盖基础知识。

无论这些保护机制中的某些看起来多么“丑陋”;目标是在某种程度上帮助(缓解/预防)安全问题,这使攻击者难以承受。众所周知,“您不能阻止黑客,只能阻止他们的努力”

工具与要求

目标是拥有一套简单的工具(功能):

  • 这些必须使用普通(香草)javascript
  • 在一起,它们不应超过几行代码(最多200行)
  • 必须如此immutable,以防止攻击者“重新捕获”
  • 这些绝不能与任何(流行的)JS框架发生冲突,例如React,Angular等
  • 不一定非要“漂亮”,但至少要可读,欢迎“单线”
  • 跨浏览器兼容,至少具有良好的百分位数

javascript websecurity

5
推荐指数
1
解决办法
86
查看次数

如何在 Laravel 项目中设置 X-Frame-Options?

我想防止我的网站受到 clickJacking 攻击。在哪个文件中以及在何处设置 X-Frame-Options 以防止 clickJacking 攻击。

html iframe clickjacking laravel websecurity

5
推荐指数
1
解决办法
4798
查看次数

next.js应用如何防止XSS和CSRF攻击?

基本上我正在使用 mongodb 构建一个无服务器的 next.js 应用程序。

想法 1:React 已经阻止了大部分 XSS,那么我应该将用户登录信息存储在 Web 存储中吗?这样我就不用担心CSRF了。

想法2:如果我使用基于httpOnly cookie的身份验证,因为httpOnly和sameorigin已经防止了XSS(和一些CSRF),我可以继续我的设计而无需担心?您认为这对于初学者电子商务网站来说足够了吗?

想法 3:将 CSRF 令牌添加到基于 cookie 的身份验证中


  1. 用户登录,在 /api/login 中,我检查用户名/密码,然后生成一个带有 CSRF 令牌的 cookie 以及 res.end(CSRF)。收到此消息后,我们将 CSRF 存储在 useContext 中,以使其可供所有组件使用。
  2. 因此,每当我使用 POST 获取时,我都会将此全局 CSRF 令牌附加到 req.body ,最后,在 /api/ 中,我们将 req.body 中的此 CSRF 与 cookie 中的 CSRF 进行比较。

无服务器应用程序有更好的想法吗?或者我错过了什么?你有什么建议吗 ?

想法4:使用CSRF内置框架,如express.js ....

更新:支持 next-auth ,但我想了解 auth 所以真的想自己构建

xss csrf serverless-framework next.js websecurity

5
推荐指数
0
解决办法
3701
查看次数

为什么 _token 和 XSRF-TOKEN 在 Laravel 中不同?

我不明白为什么 AJAX 请求 (XSRF-TOKEN) 的令牌与_token正常表单使用的令牌不同。此外,它更长。为什么?为什么有 2 个令牌呢?为什么不使用一个对 ajax 和普通请求都相同的请求?

csrf laravel websecurity

5
推荐指数
1
解决办法
973
查看次数

黑客在发出 API 请求时可以更改其域名吗?

如果我在公共互联网上发布一个 API,但它仅供我的应用程序使用,我可以制定接受域的白名单,这样其他域就无法使用它。

但我总是想知道,黑客在向我的 API 发出 HTTP 请求时不能编辑他们的“来自域”吗?他们不能模仿其他域来欺骗我的 API,让他们相信他们是可信的吗?

security api websecurity

4
推荐指数
1
解决办法
1784
查看次数

内容安全策略多重随机数

我有一个单页面应用程序(内置于 .net core MVC 2.2),其中 html 部分是动态加载的。

在主文档中,添加了具有动态生成标头的 CSP 策略,如下所示:

Content-Security-Policy: script-src 'self' 'nonce-I64vb811BxRNGV9Xf0pM'
Run Code Online (Sandbox Code Playgroud)

然后是通过 jquery ajax 加载函数加载的页面部分。page 部分包含一个带有随机数的脚本(来自 src)。带有 CSP 标头的页面部分看起来像

Content-Security-Policy: script-src 'self' 'nonce-ci5TQsyidT8x2jwBLRHS'
Run Code Online (Sandbox Code Playgroud)

一切都很好,但浏览器(chrome、safari 阻止脚本),带有消息:

jqueryscriptsbundle.js:formatted:43 Refused to execute inline script 
because it violates the following 
Content Security Policy directive: "script-src 'self' 'nonce-I64vb811BxRNGV9Xf0pM'
Run Code Online (Sandbox Code Playgroud)

因此,浏览器正在将脚本的随机数(即 ci5TQsyidT8x2jwBLRHS)与根/主页随机数值 I64vb811BxRNGV9Xf0pM 进行比较,因此脚本被阻止。

这是正确的行为吗?我该怎么做才能让它发挥作用?

html javascript nonce content-security-policy websecurity

4
推荐指数
1
解决办法
7085
查看次数

来自本地主机的这些 .env GET 请求是否表示攻击?

在 Heroku 托管站点上遇到一些间歇性 5xx 错误后,我只是在查看我们的日志,在那里我发现了许多来自 localhost 的错误,这些错误是对隐藏文件的请求,通常是 .env 以及诸如“.well”之类的东西-known/assetlinks.json”,偶尔在不存在的子文件夹中包含 .env。

请求不频繁(每天 15 - 30 个),但似乎已经持续了一周。他们还遇到了“规则禁止访问”,据我所知是 nginx。

该请求类似于:

2020/09/28 14:37:44 [错误] 160#0:*1928 规则禁止访问,客户端:10.45.153.152,服务器:localhost,请求:“GET /.env HTTP/1.1”,主机:REMOVED

我服务器上没有任何 ENV 文件,而且 nginx 似乎阻止了请求,所以感觉没有任何危害。重新启动所有 dynos 似乎已经终止了活动(基于已经过去了几个小时),但让我担心的是这些似乎是“来自房子内部”。这里有什么值得我关注的吗?这是一个机器人利用具有本地访问权限的系统中的错误的案例吗?

php security nginx heroku websecurity

4
推荐指数
1
解决办法
1827
查看次数

从 github 安装 Go 工具并遇到安装错误

我想从 github 安装这个工具:https ://github.com/ethicalhackingplayground/ssrf-tool

我正在使用cmd: go install github.com/ethicalhackingplayground/ssrf-tool@latest

输出 :

go: finding module for package github.com/projectdiscovery/gologger
go: finding module for package github.com/briandowns/spinner
go: finding module for package github.com/logrusorgru/aurora
go: found github.com/briandowns/spinner in github.com/briandowns/spinner v1.18.1
go: found github.com/logrusorgru/aurora in github.com/logrusorgru/aurora v2.0.3+incompatible
go: found github.com/projectdiscovery/gologger in github.com/projectdiscovery/gologger v1.1.4
# github.com/ethicalhackingplayground/ssrf-tool
..\..\..\go\pkg\mod\github.com\ethicalhackingplayground\ssrf-tool@v0.0.0-20200901082948-7f3cffc3c7bb\ssrftool.go:34:2: undefined: gologger.Printf
..\..\..\go\pkg\mod\github.com\ethicalhackingplayground\ssrf-tool@v0.0.0-20200901082948-7f3cffc3c7bb\ssrftool.go:35:2: undefined: gologger.Infof
..\..\..\go\pkg\mod\github.com\ethicalhackingplayground\ssrf-tool@v0.0.0-20200901082948-7f3cffc3c7bb\ssrftool.go:36:2: undefined: gologger.Infof
Run Code Online (Sandbox Code Playgroud)

我对 golang 非常陌生,go 在我的系统中安装得很好,因为 github 上的其他工具运行良好。如果需要对该工具的代码进行一些更改,请提出建议。

go websecurity

3
推荐指数
1
解决办法
2921
查看次数