首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

何为非常不确定的行为(并发)设计安全的 API,使用这些 API 时如何确保安全

.NET 中提供了一些线程安全的类型, ConcurrentDictionary,它们的 API 设计与常规设计差异很大。如果你对此觉得奇怪,那么正好阅读本文。...本文介绍为这些非常不确定的行为设计 API 时应该考虑的原则,了解这些原则之后你会体会到为什么会有这些 API 设计上的差异,然后指导你设计新的类型。...---- 不确定性 像并发集合一样, ConcurrentDictionary、ConcurrentQueue,其设计为线程安全,于是它的每一个对外公开的方法调用都不会导致其内部状态错误...在这个 lock 区间里面我们再次确认任务是否已经完成,如果没有完成,我们靠最外层的 while 循环重新回到内层 while 循环中继续任务; 如果在这个 lock 区间里面我们发现任务已经完成了,就设置...关于通用 API 设计指导,你可以阅读我的另一篇双语博客: 好的框架需要好的 API 设计 —— API 设计的六个原则 - walterlv 本文会经常更新,请阅读原文: https://blog.walterlv.com

15220

如何在CentOS 7上使用Nginx设置基本HTTP身份验证

在本教程中,您将学习如何使用Ubuntu 14.04上的HTTP基本身份验证方法限制对基于Nginx的网站的访问。HTTP基本身份验证是一种简单的用户名和(哈希)密码身份验证方法。...准备 要完成本教程,您需要以下内容: 一台已经设置好可以使用sudo命令的非root账号的CentOS 7 服务器,并且已开启防火墙。...sudo yum install -y httpd-tools 步骤2 - 设置HTTP基本身份验证凭据 在此步骤中,您将为运行网站的用户创建密码。 该密码和关联的用户名将存储在您指定的文件中。...cat /etc/nginx/.htpasswd nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/ 第3步 - 更新Nginx配置 现在您已经创建了HTTP基本身份验证凭据...您应该看到一个身份验证窗口(显示“私有财产”,我们设置的字符串auth_basic),在您输入正确的凭据之前,您将无法访问该网站。如果输入您设置的用户名和密码,您将看到默认的Nginx主页。

2K00
您找到你想要的搜索结果了吗?
是的
没有找到

如何在Ubuntu 14.04上使用Nginx设置基本HTTP身份验证

在本教程中,您将学习如何使用Ubuntu 14.04上的HTTP基本身份验证方法限制对基于Nginx的网站的访问。HTTP基本身份验证是一种简单的用户名和(哈希)密码身份验证方法。...准备 要完成本教程,您需要以下内容: 一台已经设置好可以使用sudo命令的非root账号的Ubuntu 14.04 服务器,并且已开启防火墙。...sudo apt-get install apache2-utils 步骤2 - 设置HTTP基本身份验证凭据 在此步骤中,您将为运行网站的用户创建密码。 该密码和关联的用户名将存储在您指定的文件中。...cat /etc/nginx/.htpasswd nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/ 第3步 - 更新Nginx配置 现在您已经创建了HTTP基本身份验证凭据...您应该看到一个身份验证窗口(显示“私有财产”,我们设置的字符串auth_basic),在您输入正确的凭据之前,您将无法访问该网站。如果输入您设置的用户名和密码,您将看到默认的Nginx主页。

1.2K00

SPA类前后端完全分类应用使用Authing的云身份验证与单点登录

为什么需要云身份验证和单点登录 简单来说是为了降低维护用户注册登录系统、权限、统计等各方面的成本。...前端采用纯 React/React-router/Ant.design 开发,没用 Redux/Server Rendering 之类比较复杂的东西,就使用 create-react-app 的最基本方案...前端对后端的每个API调用都要提交token,可以通过设置header的方式实现。...Authing实现的云身份验证和SSO的优点 不用实现与维护自己的用户信息系统,包括用户注册、登录、找回密码等 可以快速实现多种登录方式,邮箱登录、手机验证码登录、微信扫码登录等 可以通过Authing...checkLogin().nickname + ' 退出登录' : ''} 对API提交时,同时携带token,以便于后端验证用户权限 /** * 这个函数是用来代替原生的fetch

1.5K10

掌握并理解 CORS (跨域资源共享)

假设咱们的API位于good.com:300/public上,并且咱们的客户端托管在thirdparty.com上,该客户端可能会运行以下代码: fetch('http://good.com:3000/...在这种情况下,“来源”由 协议(http) 域名( example.com) 端口(8000) 关于 CSRF(跨站点请求伪造) 的说明 请注意,有一类攻击称为CSRF(跨站点请求伪造),它无法通过同源策略来避免...为咱们的 API 启用 CORS 现在,咱们希望允许第三方站点(thirdparty.com)上的 JS 访问咱们的 API 能得到响应。...通过设置CORS,可以让其他网站,比如evil.com获得这些敏感信息,来看看: fetch('http://good.com:3000/private') .then(response => response.text...这需要服务器和客户端设置,并且根据请求会出现预检请求。 处理经过身份验证的跨域请求时,应格外小心。 白名单可以帮助允许多个来源,而不会冒泄露敏感数据(在身份验证后受到保护)的风险。

2.1K10

什么是REST API

(请注意,旧版浏览器中的Fetch()需要设置credentials初始选项)。因此,一个API请求可以被验证,以确保一个用户已经登录并拥有适当的权限。 第三方应用程序必须使用替代的授权方法。...常见的认证选项[15]包括: HTTP基本身份验证[16]。在请求头中传递一个包含base64编码的username:password字符串的 HTTPAuthorization头。...因为base64很容易被解码,基本(Basic)认证应该只和其他安全机制一起使用,比如HTTPS/SSL。 API密钥[17]。...在其他情况下,第三方应用程序正在请求用户的私有数据,电子邮件内容。REST API必须识别用户和他们的权利,但它可能不关心哪个应用程序在调用API。...build-restful-apis-best-practices/ [15] 认证选项: https://swagger.io/docs/specification/authentication/ [16] HTTP基本身份验证

4.2K20

何为你的移动应用建立RESTful API

阅读本文,了解为您的移动应用程序设置RESTful API基本知识。 在本篇中,我们将指导您通过服务器托管、设计后端体系结构、安全性、选择数据库和存储选项,以及创建与多个平台的兼容性。...使用HTTP的基本身份验证技术不足以保护您的数据。但是,它很容易实现。 为了提供一个高度安全的环境,为企业和移动设备提供解决方案的端到端方法,当我们处理数据安全时,中心的关注点是保护一个人的身份。...如何为移动应用程序实现RESTful api ? 因此,在了解了API、工具和API类型的基础知识之后,现在是开始编写您的移动应用程序的第一个基本RESTful API的时候了。...在进行API编码之前,先设置应用程序是很重要的。js项目是在npm的帮助下开始的。npm。这允许您安装项目的JavaScript工具和模块,因为它是JS项目的包管理器。...API通过提供各种格式的细节(JSON、HTML、文本、XML等)给出响应。 结论 以上,我们试图让您了解API的开发方式。首先应该开发一个简单的API,因为这将帮助您理解基础知识。

60120

百度高德地图JS-API学习手记:地图基本设置与省市区数据加载

官方的给的案例启示很多,copy再修改下,就完成了https://lbs.amap.com/api/javascript-api/summary http://lbsyun.baidu.com/index.php...mapScript.onload = resolve  })}别人写好的参考,git上面有这个:https://github.com/iDerekLi/amap-js行政区域查询:https://lbs.amap.com/api.../javascript-api/guide/services/district-search 获取的是普通JSON数据行政区域浏览:https://lbs.amap.com/api/javascript-api...http://geojson.io/#map=10/26.8719/112.4437自己动手做的话,推荐阅读《百度高德地图行政区域边界GeoJSON数据获取并绘制行政区域》转载本站文章《百度高德地图JS-API...学习手记:地图基本设置与省市区数据加载》,请注明出处:https://www.zhoulujun.cn/html/GIS/WebGIS/2710.html

91210

2020 年你应该知道的 React 库

Next.js 用于服务器端渲染(动态 web 应用程序) ,Gatsby.js 用于静态站点生成(博客、登陆页面)。...如果您只是想了解这些初学者工具包是如何工作的,那么可以尝试从头开始设置 React 项目。你将从一个基本的 HTML 和 JavaScript 项目开始,然后自己添加 React 和它的支持工具。...现代浏览器带有本地获取 API 来执行异步数据请求: function App() { React.useEffect(() => { const result = fetch(my/api...建议: 浏览器的本地 fetch API axios Apollo Client React 类型检查 幸运的是 React 有自己的类型检查能力。...每一个“理想”的 React 设置都是主观的,取决于开发人员和项目的需求。毕竟,没有理想的 React 应用程序设置

14.4K40

简单使用Git管理项目

这篇文章将会 介绍基本的Git使用 与 远程仓库操作 何为Git Git是一个优秀的分布式版本控制软件,他可以协助你完成项目开发。 Git可以用于合作开发,且易于合并/比较多人的开发进度。...本篇文章将会主要一Linux为主进行介绍, Windows基本一致(仅目录习惯可能存在差异) 在下载完毕之后我们可以使用一下命令来设置您的个人信息(告诉Git你是谁): git config user.name...'username' #设置用户名 git config user.email '[email protected]' #设置邮箱 设置用户名与邮箱不用于身份验证,仅用于标注每一次提交的用户是谁, 建议与远程仓库的邮箱一致...git fetch : # 拉取指定分支与本地指定分支合并 git fetch # 拉取指定分支与...这个时候你需要手动解决 冲突, 打开冲突文件, 会找到冲突标记 : <?

1.3K64

开发过程中,建议使用 VSCode 的 Thunder Client 插件替代 Postman, 让你显得更专业

Thunder Client通过使用Fetch API发送HTTP请求到API,然后以人类可读的格式显示响应数据。Fetch API是一种用于进行HTTP请求的原生JavaScript API。...选择基本身份验证、OAuth 2.0或Bearer令牌。 预运行:在发送请求之前准备好事物。您可以设置变量或执行其他任务。 运行请求:按下此按钮将请求发送到API。响应将显示在响应部分。...基本上,我们验证响应体是否包含“token”属性。 在下一步中,我们将根据我们收到的响应设置环境变量 token 。...使用令牌变量进行身份验证请求 通过我们自动登录请求无缝设置的环境变量 token ,我们现在可以轻松地进行身份验证请求。...从轻松的安装到强大的API测试,ThunderClient提供了一个全面的解决方案。它的多功能性涵盖了基本的请求类型和复杂的设置,采用以用户为中心的方法,使开发人员能够轻松管理头部、参数和响应。

2.2K20

如何将ReactJS与Flask API连接起来?

我们将为您提供有关如何设置 Flask API、启用跨源资源共享 (CORS)、从 ReactJS 发出 API 请求、在用户界面中显示 API 数据以及处理 API 错误的分步指南。...下面是如何为所有 API 路由启用 CORS 的示例: from flask_cors import CORS CORS(app) 在此示例中,我们从 flask−cors 包中导入了 CORS 类,并将应用程序对象传递给它... =>  console.log(data)) 在下图中,我们利用 fetch 函数向 Flask API 的 /api 路由发起 GET 请求。...本文重点介绍了创建 Flask API、启用 CORS、从 ReactJS 发出 API 请求、在用户界面中呈现 API 数据以及处理 API 错误所需的基本步骤。...无论您是在构建基本的 Web 应用程序还是复杂的企业级应用程序,ReactJS 和 Flask API 都提供了强大的组合,可以帮助您实现目标。

27310

Django-Multitenant,分布式多租户数据库项目实战(PythonDjango+Postgres+Citus)

用法 模型变化 使用 mixins 更改模型 在 db 层自动化复合外键: 在哪里设置租户? 支持的 API Python/Django 支持分布式多租户数据库, Postgres+Citus。...在哪里设置租户? 使用中间件编写身份验证逻辑,该中间件还为每个 session/request 设置/取消设置租户。这样,开发人员不必担心基于每个视图设置租户。...只需在身份验证设置它,库将确保其余部分(将 tenant_id 过滤器添加到查询中)。上面的示例实现如下: 在您的设置中,您需要更新 MIDDLEWARE 设置以包含您创建的设置。...在您希望基于租户范围的所有视图中使用 set_current_tenant(t) api 设置租户。这将自动(不指定显式过滤器)将所有 django API 调用范围限定为单个租户。...如果未设置 current_tenant,则使用没有租户范围的 默认/原生 API。 支持的 API Model.objects.* 下的大部分 API

1.9K10

CVE-2022-21703:针对 Grafana 的跨域请求伪造

如果您已将该cookie_samesite属性设置为disabled,请警告您的 Grafana 用户避免使用尚未默认设置Lax为SameSitecookie 属性的浏览器(最值得注意的是Safari)...SameSite 及其限制¶ 任何针对 Grafana API 的伪造请求都需要经过身份验证才能有用。...攻击者的恶意页面确实可以托管在任何来源,因为对 Grafana API 的所有请求都将携带宝贵的身份验证 cookie,而不管请求的发出来源如何。...最后,一些 Grafana 管理员可能会选择将该cookie_samesite属性设置为disabled,以便SameSite在设置身份验证 cookie 时省略该属性。...有趣……这是否表明 Grafana API 只接受 JSON 请求?我们黑盒测试的下一步涉及使用Fetch API 发出一个带有有效 JSON 正文的简单请求: <!

2.2K30
领券