小编Cha*_*ies的帖子

每当我访问GitHub链接时,都会激怒GitHub Conduit对话框 - 我可以摆脱它吗?

在过去的两三天里,我遇到了一个无处不在的问题.每当我在终端中使用Git时(几乎总是这样),如果我在浏览器中访问GitHub或者甚至访问链接到GitHub 的页面,会弹出一个OSX对话框,其中显示

Github Conduit希望在钥匙串中使用存储在"privateKey"中的机密信息.

你想允许访问这个项目吗?

[ ? ][ Always allow ][ Deny ][ Allow ]
Run Code Online (Sandbox Code Playgroud)

首先,我不知道它正在访问什么 - 我的SSH密钥,我认为?我也不知道为什么当我不直接与Git交互时它会尝试访问这些信息.最糟糕的是,对话框的信息按钮被禁用,点击任何选项会产生另一个对话框,然后是另一个,然后是另一个.弹出大约3-10次(通常在该范围的较高端)后,它们会消失,直到我点击另一个链接.

世界上到底发生了什么?谷歌搜索已经产生了很少的信息(虽然它确实迫使对话一次又一次地弹出)而且我变得有点偏执.

编辑

一些额外的信息:我打开了Activity Monitor来查看发生了什么.其启动的父进程; 当我选择"打开文件和端口"时,它会列出~30个项目,从

/Users/me/Library/Containers/com.github.GitHub.Conduit/Data
Run Code Online (Sandbox Code Playgroud)

包括

/System/Library/Keychains/SystemRootCertificates.keychain
/Users/chaseries/Library/Keychains/login.keychain
Run Code Online (Sandbox Code Playgroud)

和其他keychain-ey目录(以及一大堆我不理解的其他文本字符串,包括对ReactiveCocoa和RockemSockem的引用).

"数据"是一个目录,其中包含意想不到的各种各样的东西,如我的下载文件夹,Photo Booth图像,电影等的副本.我不知道为什么这个文件在这里.说实话,我并不精通这种东西,但是'数据'这个对我来说听起来很奇怪,因此编辑.有什么想法吗?

unix git macos github

8
推荐指数
0
解决办法
2378
查看次数

Flask 中 AJAX 身份验证的 CSRF 保护

我想对网站上的登录名和注册表单进行 AJAX 化。到目前为止,我一直在使用 WTForms 主要是为了它内置的 CSRF 保护,但是对于这个项目,我觉得它不值得 - 一个额外的抽象层,因此令人沮丧,因为它应该很漂亮简单的。

所以我在 Flask 的安全部分看到了这个片段

@app.before_request
def csrf_protect():
    if request.method == "POST":
        token = session.pop('_csrf_token', None)
        if not token or token != request.form.get('_csrf_token'):
        abort(403)

def generate_csrf_token():
    if '_csrf_token' not in session:
        session['_csrf_token'] = some_random_string()
    return session['_csrf_token']

app.jinja_env.globals['csrf_token'] = generate_csrf_token
Run Code Online (Sandbox Code Playgroud)

我理解这段代码背后的思考过程。事实上,这一切对我来说都很有意义(我认为)。我看不出有什么问题。

但它不起作用。我对代码所做的唯一更改是将伪函数替换为some_random_string()os.urandom(24). 到目前为止,每个请求都有 403'd,因为tokenrequest.form.get('_csrf_token')永远不会相同。当我打印出来这是显而易见的-通常它们是不同的字符串,但偶尔的,貌似没有根本的原因,一方或另一方就会None或输出的删减版本os.urandom(24)。显然有些东西不同步,但我不明白它是什么。

python ajax csrf flask

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

VirtualEnv/Pip尝试全局安装软件包

编辑#2找到解决方案; 见下文.

我正在使用VirtualEnv在Flask中编写一个小应用程序.这远非我第一次这样做,但是这次和过去两次我尝试过我遇到了同样的问题.当我. flask/bin/activate尝试安装一个软件包时 - pip install flup例如 - 它继续全局安装,而不是安装在VirtualEnv中.奇怪的是,它只发生在我之后deactivate,并且在这方面做得如此不一致.

也就是说,我似乎能够安装我需要的所有东西,如果我一次完成所有这些,甚至偶尔在我之后deactivate,但是在一定的间隔之后它就会停止工作并开始尝试安装到我的全局Python中site-packages.(当然,当它这样做时它也会要求权限.在我明白发生了什么事之前我试图强迫它sudo,以为我sudo virtualenv flask不小心把它带到了我自己身上,但是没有,这对某些人来说是全球性的其他原因.)

我没有做任何有趣的事情,比如使用--system-site-packages参数,我在VirtualEnv配置开始发生之前没有改变任何东西.它第一次发生时,我把它归结为侥幸.现在它变得非常恼火,因为我没有心情卸载所有东西并且每次都重新安装它,或者祈祷我会在引导脚本中考虑我需要的一切.

我没有包含任何错误消息,因为它们不是(或似乎不是)特别有价值; 它只是requirement already satisfied一遍又一遍地对我大喊大叫.

编辑#1我正在逐渐淡化问题,但我仍然没有解决方案.我在同一目录中创建了一个新的Flask项目,cd-ed到它,激活它的VirtualEnv等,然后运行which pip.这是新的VirtualEnv的点子 - 正确的点子.我停用了cd-ed到我原来的项目,激活了VirtualEnv,然后运行了which pip.它吐出了另一个项目 - 新的 - pip.我进行rm -r了新的测试项目,回到原来的状态,which pip再次运行,然后吐出来/usr/local/bin/pip.哦.好.

编辑#2:解决方案我可能没有弄清楚确切的原因,但我确实找到了解决方案.在bin/activatebin/pip脚本本身是意外运行的同时将两个VirtualEnvs某种程度上改变,可能(?).也许只是巧合,它在以前从未发生过三次连续发生过.不知道.

cat-ed activate果然,第42行,为

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask2/flask"
Run Code Online (Sandbox Code Playgroud)

代替

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask/flask"
Run Code Online (Sandbox Code Playgroud)

我改变了它,又跑which …

python pip virtualenv python-2.7

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

标签 统计

python ×2

ajax ×1

csrf ×1

flask ×1

git ×1

github ×1

macos ×1

pip ×1

python-2.7 ×1

unix ×1

virtualenv ×1