Tag: 安全

客户端秘密在OAuth 2.0中

要使用谷歌驱动器的API,我必须玩OAuth2.0authentication。 我对此有了一些疑问。 客户端ID和客户端密钥用于识别我的应用程序。 但是,如果它是一个客户端应用程序,它们必须被硬编码。 所以,每个人都可以反编译我的应用程序,并从源代码中提取它们。 这是否意味着一个不好的应用程序可以假装使用良好的应用程序的客户端ID和秘密是一个很好的应用程序? 所以用户会显示一个屏幕,要求授予一个好的应用程序的权限,即使它实际上是由一个不好的应用程序所要求的? 如果是,我该怎么办? 或者其实我不应该担心这个? 在移动应用程序中,我们可以将webviewembedded到我们的应用程序中。 而且很容易在webview中提取密码字段,因为请求权限的应用程序实际上是一个“浏览器”。 那么,移动应用程序中的OAuth没有客户端应用程序无法访问服务提供者的用户凭据的好处?

如何成为SAML服务提供商

大家早上好, 我公司目前正在开发一个Java Web应用程序。 我们的几个客户有内部的SAML服务器(身份提供者?),并要求我们与他们进行整合。 所以最近我一直在读它,并与OpenAM玩耍。 大约三天之后,我对此有了一个大概的了解,但是我的知识还有一些差距。 我希望有人能为我解决这个问题。 所以这里是我如何想象用户login的工作stream程。让我们将我们的客户SAML服务器定义为https://their.samlserver.com 。 因此,用户来到我们的Web应用程序的受保护的资源。 假设这个URL是http://my.app.com/something 。 所以如果我是正确的,“my.app.com”就是SAML定义的“服务提供者”。 我们的应用程序意识到这个用户需要login。然后,我们向用户展示这样一个页面… <script>JQuery Script to auto submit this form on ready</script> <form method="post" action="https://their.samlserver.com/Post/Servlet"> <input type="hidden" name="SAMLRequest" value="someBase64Data" /> <input type="submit" value="Submit" /> </form> 那someBase64Data应该是base64编码的版本… <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="identifier_1" Version="2.0" IssueInstant="2004-12-05T09:21:59Z" AssertionConsumerServiceIndex="0"> <saml:Issuer>http://my.app.com</saml:Issuer> <samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/> </samlp:AuthnRequest> 所以我的第一个问题。 假设“ID”值是多less? 为什么我可以宣布自己是“发行人”? 身份提供者知道我吗? 也许这就是我在OpenAM上看到的“信任圈”。 如果它知道我的话,它是如何知道我的,它需要知道什么? […]

在浏览器中存储JWT的位置? 如何防止CSRF?

我知道基于cookie的authentication。 可以应用SSL和HttpOnly标志来保护来自MITM和XSS的基于cookie的身份validation。 但是,为了保护CSRF,需要采取更多的特殊措施。 他们只是有点复杂。 ( 参考 ) 最近,我发现JSON Web Token(JWT)作为authentication的解决scheme非常热门。 我知道关于编码,解码和validationJWT的东西。 但是,我不明白为什么一些网站/教程告诉我们如果使用JWT就不需要CSRF保护。 我读了很多,试图总结下面的问题。 我只希望有人能够提供智威汤逊的全貌,并澄清我误解智威汤逊的概念。 如果JWT存储在cookie中,我认为它与基于cookie的authentication相同,除了服务器不需要有会话来validationcookie /令牌。 如果没有采取特殊措施,CSRF仍然存在风险。 JWT是不是存储在cookie中? 如果JWT存储在localStorage / sessionStorage中,那么没有cookie就不需要防止CRSF。 问题是如何将JWT发送到服务器。 我在这里发现build议使用jQuery通过Ajax请求的HTTP头发送JWT。 那么,只有ajax请求可以进行身份​​validation? 另外,我还发现有更多的博客使用“Authorization header”和“Bearer”来发送JWT。 我不明白博客谈论的方法。 请问有人可以解释更多关于“授权标题”和“承载者”吗? 这是否使JWT通过所有请求的HTTP头传输? 如果是的话,CSRF呢?

Node.js + Express.js用户权限安全模型

我们有一个应用程序,有两种types的用户。 根据用户login的方式,我们希望他们可以访问应用程序的不同部分。 我们如何实现一个安全模型来防止用户看到他们无法访问的东西? 我们是否将安全作为每条路线实施的一部分? 问题是,我们将有一些重复的逻辑请求。 我们可以将其转换为辅助函数,但是我们仍然需要记住调用它。 我们是否将安全性作为全局app.all()路由处理程序的一部分? 问题是,我们必须检查每条路线,并根据多种规则做不同的逻辑。 至less所有的代码都在一个地方,但是…所有的代码都在一个地方。

如何在使用OAuth2的资源所有者密码凭据授权types时保持客户端凭据的机密性

我们正在build立一个rest服务,我们希望使用OAuth 2进行授权。 目前的草案 (5月19日第2版)描述了四种授权types 。 它们是获得授权的机制或stream程(访问令牌)。 授权码 隐含的授予 资源所有者证书 客户端凭证 看来我们需要支持他们四个,因为他们有不同的目的。 前两个(也可能是最后一个)可以从需要访问该API的第三方应用程序使用。 授权代码是授权一个足够幸运地驻留在安全服务器上的Web应用程序的标准方式,而隐式授权stream程将成为客户端应用程序的select,而客户端应用程序不能完全保留其凭据的机密性(例如,移动/桌面应用程序,JavaScript客户端等)。 我们希望使用第三种机制来在移动设备上提供更好的用户体验 – 而不是让用户在Web浏览器中login对话框等,用户只需直接在应用程序中input用户名和密码并login。 我们还希望使用“客户端凭据”授予types来获取可用于查看公用数据的访问令牌,而不与任何用户关联。 在这种情况下,这不是太多的授权,而是类似于API密钥的东西,我们只使用它来访问已经注册的应用程序,如果需要,我们可以select撤销访问。 所以我的问题是: 你是否认为我正确理解了不同授权types的用途? 你如何保持你的客户端的资料保密? 在第三种情况和第四种情况下,我们都需要在客户端的某处设置客户端ID和客户端密码,这听起来不是一个好主意。 即使使用隐式授权types,并且不公开您的客户端密码,也会阻止其他应用程序使用相同的授权机制和客户端ID来模拟您的应用程序? 总而言之,我们希望能够使用来自客户端应用程序的客户端证书和资源所有者证书stream。 这两种stream程都要求您以某种方式存储客户端密钥,但客户端是移动设备或JavaScript应用程序,因此这些可能很容易被盗用。

可开发的C#函数

这个问题类似于可开发的PHP函数 。 受感染的数据来自用户,或者更具体地说是攻击者。 当受污染的variables达到吸收function,那么你有一个漏洞。 例如,一个执行sql查询的函数是一个接收器,GET / POSTvariables是污点的来源。 C#中所有的接收器函数是什么? 我正在寻找引入漏洞或软件缺陷的function 。 我特别感兴趣的是远程执行代码漏洞。 是否有整个类/库包含黑客想要影响的function上的讨厌? 人们如何不小心做出危险的C#代码?

白帽子程序员的黑帽知识

当诚实的开发者学习黑帽黑客技术时,非程序员总是怀疑。 显然,我们需要学习很多技巧,以便我们能够保持自己的安全。 你认为一个诚实的程序员在多大程度上需要知道恶意程序员的方法?

盐生成和开源软件

据我所知,生成盐的最佳做法是使用存储在源代码中的一些神秘公式(甚至魔术常数)。 我正在开发一个我们计划以开源方式发布的项目,但问题在于,源代码是生成盐类的秘密公式,因此可以在我们的网站上运行彩虹表攻击。 我认为,很多人在我面前都考虑过这个问题,我想知道最佳实践是什么。 在我看来,如果代码是开源的,那么根本就没有任何意义,因为盐可以很容易地被反向工程化。 思考?

如何保持OAuth消费者机密安全,以及如何在受到攻击时作出反应?

这个问题是关于试图了解在像Android这样的移动平台上实现oauth所涉及的安全风险。 这里的假设是我们有一个Android应用程序,在代码中embedded了消费者密钥/秘密。 假设一个消费者的秘密已经被攻破,而黑客已经掌握了这个秘密,那么结果是什么呢? 妥协的消费者秘密假设 我是否正确地指出,这样泄露的用户秘密对用户的安全性没有任何影响,或者存储在用户正在与之交互的OAuth支持提供程序中的任何数据。 数据本身不会被黑客窃取。 黑客需要获得一个有效的用户访问令牌,这是很难得到的。 黑客可以做一个妥协的消费者的秘密? 我也正确地说明以下内容: 黑客可以设置/发布模仿我的应用程序的应用程序。 黑客可以吸引那些将经历OAuthstream程的用户,通过黑客OAuth舞蹈(使用被盗用的用户密钥/秘密)来获取访问令牌。 用户可能会认为他正在处理我的应用程序,因为他将在授权过程中看到一个熟悉的名称(消费者密钥)。 当消费者通过黑客发出请求时,黑客可以很容易地拦截访问令牌,并且与消费者秘密相结合,现在可以代表我签名请求访问我的资源。 最终用户的影响 在这个假设中 黑客利用我的消费者秘密设置了一个应用程序/网站 我的一个用户被骗入授权访问该应用程序/网站 以下可能发生: 最终用户可能会注意到可疑的事情正在进行,并通知服务提供商(例如:Google)有关恶意应用程序 服务提供商可以撤销消费者密钥/秘密 OAuth消费者(我的应用程序)影响: 我的应用程序(包含消费者密码)需要更新,因为否则我的所有客户端将无法授权我的应用程序做他们的请求(因为我的消费者的秘密将不再有效)。 委派所有OAuthstream量 尽pipe可以通过中间networking服务器委托许多OAuth交互(执行OAuth跳舞并将访问令牌发送给用户),但是还必须代理所有服务交互,因为需要消费者密钥/秘密用于签署每个请求。 这是保持消费者密钥/秘密在移动应用程序之外的唯一方法,并且存储在中间networking服务器上的更安全的地方? 备择scheme 这个代理是否有其他select? 是否有可能将消费者密码存储在中间networking服务器上,并且具有Android应用程序(已在市场上发布且已正确签名)的某种机制,可以向中间networking服务器做出安全请求以获取消费者密钥并将其存储内部在应用程序? 可以实现一个机制,中间networking服务器“知道”这是一个官方的Android应用程序,要求获取消费者的秘密,中间的networking服务器将只发放消费者的秘密,该特定的Android应用程序?

Elasticsearch中的身份validation

如何在Elasticsearch中定义安全访问? 我有elasticsearch-head插件,但您的访问不需要任何安全性。