小编Bau*_*han的帖子

基于哈希片段的安全性如何工作?

我正在学习OAuth 2.0,无法在隐式授权流程中获得保护访问令牌的方法.规范中有一些论文和一些看起来相互矛盾的SO答案.有人可以清理一下吗?来自SO答案和规范的引言令我感到困惑:

  1. (来自规范)用于将访问令牌传递到客户端的重定向URI.可以向访问资源所有者的用户代理的资源所有者或其他应用程序公开访问令牌.
  2. (来自规范)访问令牌凭证(以及任何机密访问令牌属性)必须在传输和存储中保密,并且仅在授权服务器,访问令牌有效的资源服务器以及与之对应的客户端之间共享.发出访问令牌.访问令牌凭证必须仅使用TLS传输.
  3. (来自接受和赞成的回答)在隐式流中,访问令牌作为哈希片段传递,只有浏览器知道哈希片段.浏览器会将哈希片段直接传递到目标网页/重定向URI,即客户端的网页(哈希片段不是HTTP请求的一部分),因此您必须使用Javascript读取哈希片段.哈希片段不能被中间服务器/路由器拦截(这很重要).

我的问题:

P1表示通过重定向URI和P2传递给客户端的令牌表示传递通道必须是TLS编辑的.但是P3说哈希片段没有发送到网络.如果访问令牌没有发送,那么它是如何到达客户端的,因为它是哈希片段?无论如何,它必须通过网络发送不是吗?或者使用重定向URI发送令牌可以在没有网络交易的情

唯一可能的解释 - 在引擎盖下浏览器仅通过网络发送url的非哈希部分,并且在加载新页面之后,只需插入哈希片段并使其可用于JS.如果我是对的,我仍然无法理解为什么我们不使用可靠,安全的HTTPS通道作为响应参数发送令牌?

java user-agent oauth oauth-2.0

14
推荐指数
1
解决办法
2597
查看次数

是starttls.enabled = true对于从java代码发送邮件是否安全?

我正在从java代码发送电子邮件.我的配置是

 props.put("mail.smtp.starttls.enable", "true");
 props.put("mail.smtp.host", "****"); 
 props.put("mail.smtp.auth", "true");
 props.put("mail.smtp.port", "587");
Run Code Online (Sandbox Code Playgroud)

在我的另一个问题上, EJP回答道

发出STARTTLS命令后,任何使用STARTTLS的协议都处于SSL模式

但我的调试输出显示:DEBUG SMTP:尝试连接到主机"****",端口587,isSSL false.

所以我的问题听起来像

虽然我的调试输出中的isSSL = false,这样的配置是否真的安全并且SSLEJP一样使用?

UPDATE

连接代码

 Transport transport = session.getTransport("smtp");
 transport.connect("host", 587,"username", "password");
Run Code Online (Sandbox Code Playgroud)

当我写的时候 Transport transport = session.getTransport("smtps")我得到了

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
Run Code Online (Sandbox Code Playgroud)

java email ssl smtp

6
推荐指数
1
解决办法
2万
查看次数

如果我使用非最终的ConcurrentHashMap会发生什么

我在某处读到,即使ConcurrentHashMap保证在多个线程中使用它也是安全的,它应该被声明为final,甚至private final.我的问题如下:

1)CocurrentHashMap如果不将其声明为仍然保持线程安全final吗?

2)关于私人关键字的相同问题.可能最好问一般问题 - public/private关键字会影响运行时行为吗?我理解它们在内部/外部类的可见性/用法方面的含义,但在多线程运行时的上下文中意味着什么呢?我认为代码public ConcurrentHashMap可能只是在编码风格术语中不正确而不是在运行时,我是对的吗?

java multithreading concurrenthashmap

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

为什么以及何时使用动态servlet注册?

我正在调查由JHipster生成的spring boot项目,并发现所有请求映射都是通过web.xml完成​​的(AFAIK,spring-boot rids来自创建web.xml,没关系)不是通过spring,RequestMapping而是如下所示:

 ServletRegistration.Dynamic someServlet=
                servletContext.addServlet("someServlet", new SomeServlet());

 someServlet.addMapping("/someUrl");
 someServlet.setAsyncSupported(true); 
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 动态注册有没有合理的优势而不是经典的映射?
  2. 是spring-boot注册映射的标准还是仅仅是jhipster所有者的意愿?
  3. someServlet.setAsyncSupported(true)制作的另一种方式response.setHeader("Access-Control-Allow-Origin", "*")

java spring spring-boot jhipster

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

JPA JPQL 是从数据库还是从持久化上下文中选择查询读取?

我有 id=1 的文档实体和一些托管文档对象。

 Document managedDoc = entityManager.find(Document .class, 1);
 managedDoc.setName("changedName");
Run Code Online (Sandbox Code Playgroud)

据我所知,在调用 setter 后,托管文档状态在持久上下文(进一步的 PC)中发生了变化,但数据库中没有任何变化。在我的代码中的某处,我执行以下操作:

 Query query = entityManager.createQuery("from Document");
 List<Document> list = query.getResultList();
 return list;
Run Code Online (Sandbox Code Playgroud)

当我执行如上所示的全选查询时,id=1 的文档是从 DB 还是从 PC 中获取的?从 DB 意味着 select 不会看到新名称,因为新名称仍在 PC 中。

实际上,我的问题是通过更新merge() and flush()并进一步检索所有对象 - 目前我的全选查询没有看到某些字段的新值。看起来合并+刷新是可以的,但 JPA 查询不是从 DB 而是从 PC 读取。但即使我是对的,PC 和 DB 都包含名称的新值,为什么我的全选没有看到它?

此外,全选有时会返回正确/更新的值,有时不会

更新

澄清:

  1. 我通过 entityManager.find(Document .class, 1);
  2. 我创建了一些设置了名称属性的新分离实例。从托管实例获取的 ID 和其他道具。例如, managedDoc = getFromSomeDataStructure(); Document nonManaged = new Document(managedDoc.getId()); nonManaged.setName("newName");
  3. 我通过更新数据库 em.merge(nonManaged);flush();
  4. 在 Workbench 中检查时,我在 DB …

java mysql hibernate jpa

4
推荐指数
2
解决办法
6011
查看次数

如何从ms word文档的当前可见页面中获取单词?

我正在为 MS Word 开发 C# 插件。我可以抓取当前文档的所有单词 - 就像这样:

app = (Word._Application )Application; // Application object comes on addin's connection
foreach(Word.Word word in app.Application.Words)
{
     doSmth(word);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何不是从整个文档而是从当前活动(用户可见)页面中获取所有单词?

换句话说,我需要定义 app.Application.ActiveDocument 的活动页面/段落并使用“活动”词做一些事情。

c# add-in ms-word

2
推荐指数
1
解决办法
3473
查看次数