小编Kar*_*iem的帖子

在使用nonce的电子邮件中激活/注册/密码重置链接的最佳做法是什么

应用程序发送电子邮件以验证用户帐户或重置密码.我相信以下是应该的方式,我要求参考和实现.

如果应用程序必须在电子邮件中发送链接以验证用户的地址,根据我的观点,链接和应用程序对链接的处理应具有以下特征:

  1. 该链接在请求URI()中包含一个noncehttp://host/path?nonce.
  2. 在链接(GET)之后,向用户呈现表单,可选地具有随机数.
  3. 用户确认输入(POST).
  4. 服务器接收请求和
    • 检查输入参数,
    • 执行更改,
    • 并使nonce无效.

根据安全和幂等方法的HTTP RFC,这应该是正确的.

问题是这个过程涉及一个额外的页面或用户操作(第3项),这被很多人认为是多余的(如果不是无用的).我在向同行和客户介绍这种方法时遇到了问题,因此我要求更广泛的技术小组提供相关信息.我跳过POST步骤的唯一论点是可能从浏览器预加载链接.

  • 是否有关于这个主题的参考资料可以更好地解释这个想法并说服一个非技术人员(来自期刊,博客......的最佳实践)?
  • 是否有实施此方法的参考站点(最好是受欢迎且有许多用户)?
    • 如果没有,是否有记录原因或等效替代方案?

谢谢你,
Kariem


细节幸免

我保持主要部分简短,但为了减少关于我故意遗漏的细节的太多讨论,我将添加一些假设:

  • 电子邮件的内容不是此讨论的一部分.用户知道她必须单击链接才能执行操作.如果用户没有反应,则不会发生任何事情,这也是已知的.
  • 我们不必说明我们邮寄用户的原因,也没有说明通信政策.我们假设用户希望收到电子邮件.
  • nonce具有到期时间戳,并且与收件人电子邮件地址直接关联以减少重复.

笔记

使用OpenID等,普通的Web应用程序可以免于实施标准的用户帐户管理(密码,电子邮件......),但仍有一些客户需要" 他们自己的用户 "

奇怪的是,我还没有找到令人满意的问题,也没有回答.到目前为止我发现了什么:

security authentication http idempotent

58
推荐指数
2
解决办法
3万
查看次数

我收到了这个警告:非varargs调用varargs方法,最后一个参数的参数类型不精确;

这是我的示例代码,我收到警告.

Class aClass = Class.forName(impl);
Method method = aClass.getMethod("getInstance", null);
item = (PreferenceItem) method.invoke(null, null);
Run Code Online (Sandbox Code Playgroud)

警告:

警告:非varargs调用varargs方法,最后一个参数的参数类型不精确; 强制转换为java.lang.Class,为varargs调用强制转换为java.lang.Class []进行非varargs调用并禁止此警告方法method = aClass.getMethod("getInstance",null);

请帮我解决这个问题

java

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

检测到已解决的迁移未应用于flyway上的数据库

我们使用flyway来管理数据库模式版本,我们正面临一个问题.由于我们作为一个团队工作并使用git作为我们的源代码管理,因此在某些情况下,不同的人会在他们自己的本地存储库上更新数据库模式.如果发生这种情况,我们会得到

检测到已解决的迁移未应用于数据库:2016.03.17.16.46"

时间"2016.03.17.16.46"被另一个人添加,之前我已经应用了一些时间戳.如果发生这种情况,我们必须清理所有数据库表并再次创建它们.我们试图设置错误validateOnMigrate并做了flywayClean,但没有任何帮助.还有另一种方法可以改变吗?

database flyway

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

如何找出请求的来源(在chrome dev工具中)?

我的页面中有一个奇怪的网络请求,它指的是我之前从每个html文件中删除的JavaScript文件.清除缓存,并且在源html和JavaScript文件中找不到单个引用.为了解决这个问题,并且出于一般的好奇心,我想知道是否有一种简单的方法可以找出触发请求的位置,最好是使用chrome-devtools.

更新: 感谢jaredwilli,我在网络选项卡下找到了initator列.然而,这仅表明Other.我想知道的是(html或javascript)文件,其中已经触发了这些请求.

google-chrome-devtools

21
推荐指数
1
解决办法
7342
查看次数

按时间戳字段过滤 Firestore 控制台上的结果

如何通过时间戳字段过滤Firestore 控制台上的结果?

在集合userscreatedOn上,我们有一个时间戳类型的字段。如果我想按字段过滤集合,我会看到以下对话框

按“createdOn”过滤“用户”集合

我尝试以字符串形式输入日期

  • 2019-09-15
  • 2019-09-15T00:00:00Z

我还尝试使用时间戳作为以毫秒和秒为单位的数字

  • 1568505600000
  • 1568505600

在查看发送到 Firestore 的请求时,结构化查询使用字段过滤器,其对应于stringValueintegerValue,但我认为这timestampValue将是正确的事情。

我不想调整控制台中的查询并构建我自己的请求。我知道总是可以选择对集合中的文档进行排序,然后滚动到感兴趣的位置,但这将加载所有不相关的文档。

有没有一种简单的方法可以做我想做的事?

google-cloud-firestore

11
推荐指数
1
解决办法
996
查看次数

使用 Firebase Admin SDK 更新用户时超出配额 - 我如何请求更多?

当需要启用/禁用整个租户时,我们尝试在我们的多租户设置中更新许多用户。这样,我们有时会遇到QUOTA_EXCEEDED错误,尤其是对于拥有许多用户的大型租户。我在这里问过如何做得更好:一次禁用多个用户

由于目前没有使用 Firebase Admin SDK 更新用户的批量操作,我如何请求提高配额?

如何提高配额?

firebase firebase-authentication firebase-admin

9
推荐指数
2
解决办法
3069
查看次数

Java Web start - 无法加载资源

当我浏览服务器的IP地址时,我有一个用java web start加载的jar.一旦我尝试服务器名称,我得到以下异常:

com.sun.deploy.net.FailedDownloadException: Unable to load resource:
    at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
    at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

包装异常:

java.io.FileNotFoundException: 
  at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
  at java.lang.reflect.Constructor.newInstance(Unknown Source)
  at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
  at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
  at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
  at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)
  at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown …

java java-web-start

7
推荐指数
2
解决办法
12万
查看次数

如何包装C库以便可以从Web服务调用它

我们有一个用C语言实现的非常复杂的逻辑库.它有一个命令行界面,没有太复杂的基于字符串的参数.为了访问它,我们希望包装库,以便可以使用简单的XML RPC或甚至简单的HTTP POST调用来访问它.

有一些Java经验,我的第一个想法是

  • 将库包装在JNI/JNA中
  • 使用瘦WS堆栈和servlet引擎
  • 代理通过Apache请求到servlet引擎

我相信应该已经有一些可以使用的简单,所以我在这里发布这个问题.解决方案具有以下要求

  • 它应该可以部署到当前的Linux发行版,最好通过包管理可用
  • 它应该与标准Web服务器集成(如我的示例Apache)
  • 对库的界面进行小的更改应该是可管理的
  • 端到端(HTTP-WS-library-WS-HTTP)解决方案不应该产生太多开销,但可靠性非常重要

作为JNI/JNA提议的替代方案,我认为在C#世界中编写Web服务并调用这个非托管代码模块应该不会太难,但我希望有人可以给我一些关于需求的可行指针.

c web-services unmanaged http wrapper

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

是否有类似Solr或Elasticsearch的东西只能在Javascript中在客户端上使用?

我们有一个小的数据集,并希望以巧妙的方式搜索它,以填充自动完成的输入框.用户想要搜索一种类型的实体,但应该能够放入相关类型的属性.

由于我们的应用程序是针对特定行业的,我将尝试将抽象问题放入更相关的背景中:

示例:用户想要选择某种类型的水果,并可以使用水果的许多不同特征来搜索它.她可能会搜索它的名字(苹果),特殊类型的相同水果(金色美味),本地化版本(apfel,تفاح,pomme),还有其他特征,例如含有水果的食物(pandowdy,苹果酒),甚至对其描述进行全文搜索的结果.

通常我会想要使用像solrelasticsearch这样的东西,但我们的数据集并不是很大,每个最多200个元素的4-5个相关实体.此外,它将保持非常静态,每隔一周添加一些编辑.所以我们考虑使用浏览器的数据存储来管理和搜索某种索引.问题是,在我们的研究中,我们找不到任何远远超出抽象Web SQLIndexed DB的东西.

是否有任何项目或库可以执行solr或elasticsearch之类的操作,并且可以在客户端用于小型数据集?我们正在寻找以下功能

  • 快速搜索
  • 预处理(标记化,过滤......)
  • 订购
  • 排名,查询提升

它应该适用于最近的浏览器和移动,其他浏览器(即全文搜索)可接受的愚蠢后备

javascript indexing search storage

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

如何在没有Node.JS的情况下运行UglifyJS2

无论如何在没有node.js的情况下运行UglifyJS2?假设我想使用JavaScript脚本引擎在JVM进程中运行它.怎么做?

javascript jvm scriptengine uglifyjs uglifyjs2

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

一次禁用多个用户

我们在多租户设置中使用Firebase 身份验证。在某些情况下,我们希望禁用一个租户的所有用户(试用结束、订阅未续订...)或启用所有以前禁用的用户。我们为每个必须启用/禁用的用户发送一个UpdateRequest 。

尽管我们按顺序发送请求(每个租户一次仅发送一个请求,并且同时禁用的租户不多),但我们多次遇到配额超出错误:

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "invalid",
                "message": "QUOTA_EXCEEDED : Exceeded quota for updating account information."
            }
        ],
        "code": 400,
        "message": "QUOTA_EXCEEDED : Exceeded quota for updating account information."
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 Admin SDK 为多个用户进行批量更新?我们目前在 Java 中使用它,但 NodeJS 也适用于我们。或者,了解是否有另一种方法可以禁用多个用户(例如使用用户属性上的表达式过滤器)会很有趣。

firebase firebase-authentication firebase-admin

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