小编Par*_*eog的帖子

如何在不使用OAuth的情况下制作安全API?

我的要求

我正在制作一个也有移动版的网站.所以,我正在以API为中心.现在我想在没有OAuth复杂性的情况下使我的API安全,因为我需要的安全性非常简单.我不希望有权访问api链接的任何人能够访问我的数据.

所以,我遇到了这篇文章http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/这是非常惊人的,并且清除了我的大部分疑虑.

现在,我正在尝试重新创建文章中的任何内容.我正在使用Laravel 5框架进行PHP开发.

我想确保移动应用程序和Web版本仅使用API​​,而不是其他任何人.我见过像api这样的链接

example.com/fetchallinformation&publicKey=<something>&Hashkey?<some_hash_key>
Run Code Online (Sandbox Code Playgroud)

现在,我明白这个键是通过hash_hmac()在php中使用函数生成的.

我的方法

  • 我有一个表,我为我的api用户存储publicKey和privateKey
  • URL中的HashKey是通过在客户端散列privateKey和publicKey生成的,然后发送到服务器.因此,我将生成的Hash与publicKey一起发送到服务器.
  • 在服务器端,我使用publicKey和Hash.我从与publicKey对应的表中检索私钥并拥有它们并检查结果散列是否与客户端发送的散列相同
  • 如果它是相同的,那么我给他们许可,否则,我没有.

我的困惑

  • 我不确定这是否是正确的方法.

  • 我们可以hash_hmac()通过解密哈希来获取用于生成哈希的数据吗?

php security api hash amazon-web-services

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

如何在Python中找到两个一维数组之间的马氏距离?

我有两个一维数组,我需要找出它们之间的马哈拉诺比斯距离。

阵列1

-0.125510275,0.067021735,0.140631825,-0.014300184,-0.122152582,0.002372072,-0.050777748,-0.106606245,0.149123222,-0.159149423,0.210138127,0.031959131,-0.068411253,-0.038253143,-0.024590122,0.101361006,-0.160774037,-0.183688596,-0.07163775,-0.096662685,-0.000117288,0.14251323,-0.030461289,-0.006710192,-0.217195332,-0.338565469,-0.030219197,-0.100772612,0.144092739,-0.092911556,-0.008420993,0.042907588,-0.212668449,-0.009366207,-7.01E-05,0.134508118,-0.015715659,-0.050884761,0.18804647,0.04946585,-0.242626131,0.099951334,0.053660966,0.275807977,0.216019884,-0.009127878,0.019819722,-0.043750495,0.12940146,-0.259942383,0.061821692,0.107142501,0.098196507,0.022301452,0.079412982,-0.131031215,-0.049483716,0.126781181,-0.195536733,0.077051811,0.061049294,-0.039563753,0.02573989,0.025330214,0.204785526,0.099218346,-0.050533134,-0.109173119,0.205652237,-0.168003649,-0.062734045,0.100320764,-0.063513778,-0.120843001,-0.223983109,0.075016715,0.481291831,0.107607022,-0.141365036,0.075003348,-0.042418435,-0.041501854,0.096700639,0.083469011,-0.033227846,-0.050748199,-0.045331556,0.065955319,0.26927036,0.082820699,-0.014033476,0.176714703,0.042264186,-0.011814327,0.041769091,-0.00132945,-0.114337325,-0.013483777,-0.111367472,-0.051828772,-0.022199111,0.030011443,0.015529033,0.171916366,-0.172722578,0.214662731,-0.0219073,-0.067695767,0.040487193,0.04814541,0.003313571,-0.01360167,0.115932293,-0.235844463,0.185181856,0.130868644,0.010789306,0.171733275,0.059378762,0.003508842,0.039326921,0.024174646,-0.195897669,-0.088932432,0.025385177,-0.134177506,0.08158315,0.049005955
Run Code Online (Sandbox Code Playgroud)

并且,数组 2

-0.120652862,0.030241199,0.146165773,-0.044423241,-0.138606027,-0.048646796,-0.00780057,-0.101798892,0.185339138,-0.210505784,0.1637595,0.015000292,-0.10359703,0.102251172,-0.043159217,0.183324724,-0.171825036,-0.173819616,-0.112194099,-0.161590934,-0.002507193,0.163269699,-0.037766434,0.041060638,-0.178659558,-0.268946916,-0.055348843,-0.11808344,0.113775767,-0.073903576,-0.039505914,0.032382272,-0.159118786,0.007761603,0.057116233,0.043675732,-0.057895001,-0.104836114,0.22844176,0.055832602,-0.245030299,0.006276659,0.140012532,0.21449241,0.159539059,-0.049584024,0.016899824,-0.074179329,0.119686954,-0.242336214,-0.001390997,0.097442642,0.059720818,0.109706804,0.073196828,-0.16272822,0.022305552,0.102650747,-0.192103565,0.104134969,0.099571452,-0.101140082,-0.038911857,0.071292967,0.202927336,0.12729995,-0.047885433,-0.165100336,0.220239595,-0.19612211,-0.075948663,0.096906625,-0.07410948,-0.108219706,-0.155030385,-0.042231761,0.484629512,0.093194947,-0.105109185,0.072906494,-0.056871444,-0.057923764,0.101847053,0.092042476,-0.061295755,-0.031595342,-0.01854251,0.074671492,0.266587347,0.052284949,0.003548023,0.171518356,0.053180017,-0.022400264,0.061757766,0.038441688,-0.139473096,-0.05759665,-0.101672307,-0.074863717,-0.02349415,-0.011674869,0.010008151,0.141401738,-0.190440938,0.216421023,-0.028323224,-0.078021556,-0.011468113,0.100600921,-0.019697987,-0.014288296,0.114862509,-0.162037179,0.171686187,0.149788797,-0.01235011,0.136169329,0.008751356,0.024811052,0.003802934,0.00500867,-0.1840965,-0.086204343,0.018549766,-0.110649876,0.068768717,0.03012047
Run Code Online (Sandbox Code Playgroud)

我发现Scipy已经实现了该功能。然而,我对 IV 的值应该是多少感到困惑。我尝试执行以下操作

V = np.cov(np.array([array_1, array_2]))
IV = np.linalg.inv(V)
print(mahalanobis(array_1, array_2, IV))
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

文件“C:\Users\XXXXXX\AppData\Local\Continuum\anaconda3\envs\face\lib\site-packages\scipy\spatial\distance.py”,第 1043 行,在 mahalanobis 中 m = np.dot(np.dot (δ, VI), δ)

ValueError:形状 (128,) 和 (2,2) 未对齐:128 (dim 0) != 2 (dim 0)

编辑:

array_1 = [-0.10577646642923355, 0.09617947787046432, 0.029290344566106796, 0.02092641592025757, -0.021434104070067406, -0.13410840928554535, 0.028282659128308296, -0.12082239985466003, 0.21936850249767303, -0.06512433290481567, 0.16812698543071747, -0.03302834928035736, -0.18088334798812866, -0.04598559811711311, -0.014739632606506348, 0.06391328573226929, -0.15650317072868347, -0.13678401708602905, 0.01166679710149765, -0.13967938721179962, 0.14632365107536316, 0.025218486785888672, 0.046839646995067596, 0.09690812975168228, -0.13414686918258667, -0.2883925437927246, -0.1435326784849167, -0.17896348237991333, 0.10746842622756958, -0.09142691642045975, 0.04860316216945648, 0.031577128916978836, -0.17280976474285126, …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

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

如何在 Ubuntu 中通过静默安装 Postgresql。Dockerfile?

我有以下 docker 文件,我正在使用该命令docker build -t demo:v1 .来构建映像。

FROM ubuntu:18.04
WORKDIR /app
RUN apt update \
    && apt -y upgrade \
    && apt install -y python3 \
    && apt install -y python3-pip \
    && apt install -y poppler-utils \
    && apt install -y libsm6 libxext6 libxrender-dev

RUN apt install -y postgresql

COPY requirements.txt /app/requirements.txt

RUN pip3 install -r requirements.txt

COPY . /app

CMD gunicorn -t 300 --workers 5 --bind  0.0.0.0:8080 wsgi
Run Code Online (Sandbox Code Playgroud)

当我使用它构建图像时,在安装 postgresql 时,它需要输入并像这样停止构建过程

.
.
.
.
Setting …
Run Code Online (Sandbox Code Playgroud)

postgresql docker dockerfile

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

Numpy 只取字符串的第一个字符

以下是我的问题的简化版本。我想创建一个(N, 1)形状 numpy 数组,它将字符串作为它们的值。但是,当我尝试插入字符串时,只会插入字符串的第一个字符。

我在这里做错了什么?

>>> import numpy as np
>>> N = 23000
>>> Y = np.empty((N, 1), dtype=str)
>>> Y.shape
(23000, 1)
>>> for i in range(N):
...     Y[i] = "random string"
...
>>> Y[10]
array(['r'], dtype='<U1')
Run Code Online (Sandbox Code Playgroud)

python numpy

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

在 NodeJS 中每小时运行一次作业

我正在使用nodejs 和Mongodb。我想使用 npm节点计划运行每个用户定义的小时数的作业,但它不起作用。

这是我的代码

    var schedule = require('node-schedule');
    var  mailTimer = 1;
    var intMail = schedule.scheduleJob('* * '+mailTimer+' * *', function(){
          console.log('its run');
    });

//its means its run every 1 hour.
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

Selenium 任务变得越来越慢

不确定标题应该是什么,请随意编辑。我是Selenium的新手,只是在玩弄它。我尝试在我最喜欢的网站之一(10fastfingers.com)上进行实验,我经常用它来练习打字。我尝试使用最新版本的 Selenium 和 Python(3.5.*) 来自动输入。自动化可以工作,但速度真的很慢。

这是我的示例脚本,我不知道为什么它变慢。如果有人能在这里帮助我那就太好了。我原以为脚本会超过 100 WPM,但实际上只达到了37 WPM

问题是,只有两行单词可见,因此,它不会一次获取所有单词,当您继续输入单词时,单词会不断出现。所以,我不能一次接受所有单词,并将其存储在一个列表中,然后稍后循环它们。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://10fastfingers.com/typing-test/english")
input = driver.find_element_by_id("inputfield")
for i in range(300):
    word = driver.find_element_by_class_name("highlight")
    word = word.text
    print("Typing word ", word)
    input.send_keys(word)
    input.send_keys(Keys.SPACE)
Run Code Online (Sandbox Code Playgroud)

更新

我尝试获取之前的所有单词,而不是按照 @ alecxecfind_element_*的建议在循环内使用。为此,我必须使用BeautifulSoup来解析 HTML,因为它是字符串格式,并且我无法使用它的任何函数。以下脚本将打字速度提高到138 WPM。但是,我注意到前 20 秒的打字速度非常快,然后速度开始逐渐下降。请随时在您的计算机上试用该脚本,并让我知道该脚本在您的系统上实现的测试(WPM)结果。也许这也取决于系统配置。我不知道。这是内存问题吗?或者代码问题?知道如何解决这个问题吗?find_element_*

修改代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
driver = webdriver.Firefox()
driver.get("http://10fastfingers.com/typing-test/english")
input = …
Run Code Online (Sandbox Code Playgroud)

python selenium automation

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

无法在 Django 中将类从一个应用程序导入到另一个应用程序

我正在尝试从另一个 Django 应用程序中的一个 Django 应用程序导入一个类。

mainProjectFolder
|--__init__.py
|--manage.py
|--app1
    |--__init__.py
    |--class1.py
|--app2
    |--__init__.py
    |--anotherClass.py
|--mainProjectFolder
    |--__init__.py
    |--settings.py
    ...
Run Code Online (Sandbox Code Playgroud)

app2.anotherClass.py,我在做:

from mainProjectFolder.app1.class1 import Class1
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ImportError: No module named 'mainProjectFolder.app1'
Run Code Online (Sandbox Code Playgroud)

我在我注册的应用程序INSTALLED_APPSsettings.py的文件也是如此。

如果有任何不清楚的地方,请告诉我,我将编辑所需的内容。

python django python-import importerror

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

ssl.SSLError: [SSL: UNSUPPORTED_PROTOCOL] 在 Docker Python:3.6-slim 中不受支持的协议 (_ssl.c:852)

我正在使用 Docker 来设置我的 Python 环境。因为,我正在使用python:3.6-slim基本图像。

我现在需要向一个仅在内部网中可用的 URL 发送一个 get 请求(假设它是https://internal.company.com/API/some_value)。我在 AWS EC2 上使用 Ubuntu 服务器,我试图在其中构建此映像。

从那个 EC2 服务器,我能够请求上述 URL,但是,当我从 docker 容器内部执行相同操作时,我收到以下错误。

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 672, in urlopen
    chunked=chunked,
  File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 376, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 994, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.6/site-packages/urllib3/connection.py", line 394, in connect
    ssl_context=context,
  File "/usr/local/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 370, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/local/lib/python3.6/ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "/usr/local/lib/python3.6/ssl.py", line 817, in …
Run Code Online (Sandbox Code Playgroud)

python docker

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

如何将参数传递给第一个参数为self的python函数?

采用以下简化示例.

class A(object):
    variable_A = 1
    variable_B = 2

    def functionA(self, param):
        print(param+self.variable_A)

print(A.functionA(3))
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我收到以下错误

Traceback (most recent call last):
  File "python", line 8, in <module>
TypeError: functionA() missing 1 required positional argument: 'param'
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除self,在函数声明中,我无法访问变量variable_Avariable_B类,我得到以下错误

Traceback (most recent call last):
  File "python", line 8, in <module>
  File "python", line 6, in functionA
NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

那么,我如何访问类变量而不是在这里得到param错误?我正在使用Python 3 FYI.

python function self python-3.x

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

如何在 Python3 中验证 json 结构

我使用 Python3.5 和 Django 作为 web api。当我提到输入时,我指的是一个 HTTP 请求参数。我有一个参数,我需要一个 JSON 数据,我需要在进一步处理之前对其进行验证。

我有一个基本的 json 结构,输入必须在其中。例如,

{
  "error": "bool",
  "data": [
      {
        "name": "string",
        "age": "number"
      },
      {
        "name": "string",
        "age": "number"
      },
      ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

以上JSON表示我希望输入的结构。键是预定义的,值表示我期望的键的数据类型。我遇到了一个执行此验证的 Python 库(jsonschema),但我找不到任何可以处理动态数据的文档。即 JSON 数组 'data' 中的对象可以是任意数量,当然这是我想出的最简单的场景来解释基本要求。在这种情况下,我如何验证我的json?

这里的解决方案没有帮助,因为它只是根据 Django 模型检查 json 是否正确。我的 json 与 Django 模型没有关系。它是一个简单的json结构。它仍然没有告诉我如何验证动态对象

python django validation json

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