小编sau*_*ger的帖子

为什么CORS中没有用于标准内容类型的POST请求的预检

我对CORS POST请求的安全性方面有点困惑.我知道网上有关于这个话题的信息丢失了,但我找不到我的问题的明确答案.

如果我理解正确,同源策略的目标是防止CSRF攻击,并且CORS的目标是在(并且仅当)服务器同意与其他站点上托管的应用程序共享其数据时启用资源共享(起源) ).

HTTP指定POST请求不是"安全"的,即它们可能会更改服务器的状态,例如通过添加新注释.当使用HTTP方法POST发起CORS请求时,如果请求的内容类型是非标准的(或者如果存在非标准的http标头),则浏览器仅执行"安全"预检请求.因此,执行带有标准内容类型和标准标头的POST请求,并且可能对服务器产生负面影响(尽管请求脚本可能无法访问响应.)

存在这种向每个表单添加随机令牌的技术,然后服务器需要将其作为每个非安全'请求的一部分.如果脚本试图伪造请求,它也可以

  1. 没有随机令牌,服务器拒绝请求,或
  2. 它尝试访问定义随机令牌的表单.使用随机令牌的此响应应具有适当的头字段,以便浏览器不会授予恶意脚本访问此响应的权限.同样在这种情况下尝试失败.

我的结论是,对标准内容类型和标题的伪造POST请求的唯一保护是上述技术(或类似的技术).对于任何其他非安全'请求,例如PUT或DELETE,或具有json内容的POST,使用该技术不是必需的,因为CORS执行'安全'OPTIONS请求.

为什么CORS的作者将这些POST排除在预检请求之外,因此有必要采用上述技术?

security post same-origin-policy cors preflight

18
推荐指数
1
解决办法
3842
查看次数

Docker 撰写卷权限 linux

我尝试在 docker 容器中运行 wordpress 我的docker-compose.yaml文件是:

version: "2"
services:
  my-wpdb:
    image: mariadb
    ports:
      - "8081:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
  my-wp:
    image: wordpress
    volumes:
      - ./:/var/www/html
    ports:
      - "8080:80"
    links:
      - my-wpdb:mysql
    environment:
      WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
Run Code Online (Sandbox Code Playgroud)

当我构建 docker 结构时,卷已安装但属于 root。

我试图改变它:

my-wp:
  image: wordpress
  user: 1000:1000    # added
  volumes:
    - ./:/var/www/html
  ports:
    - "8080:80"
  links:
    - my-wpdb:mysql
  environment:
    WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
Run Code Online (Sandbox Code Playgroud)

现在我可以编辑文件了。但随后容器不再为网站提供服务。

解决此权限问题的正确方法是什么?

linux permissions wordpress docker docker-compose

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

配方中的细胞含量

是否可以将单元格的内容放在公式中.公式我指的是数学公式编辑器(insert-> object-> formula).

openoffice-calc

8
推荐指数
1
解决办法
1550
查看次数

如何使用docker cp从主机rsync到docker容器

我正在尝试执行以下操作:

  1. 在后台启动一个容器

docker run -dit -p 8090:80 --name container repository:dockerfile bash

  1. 我想排除子目录/data/test

docker cp /Users/$USER/test container:/test

  1. 我想为此使用rsync docker exec rsync -avP --exclude /Users/$USER/test/data /Users/$USER/test/ container:/test/

我得到以下错误:

rsync: Failed to exec ssh: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(85) [sender=3.1.0]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226)
[sender=3.1.0]
Run Code Online (Sandbox Code Playgroud)

如何从主机到容器进行同步?

docker dockerfile

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

Wheel 取决于构建时的 numpy 版本

我正在尝试构建一个 python 扩展,它使用 numpy C-API 来操作 numpy 数组。在设置部署链时,我遇到了一个问题。

在我requirements.txtsetup.py我中添加了依赖项numpy>=1.7,因为我正在使用该版本中引入的 API 功能。我正在quay.io/pypa/manylinux1_x86_64docker 镜像中造轮子。在图像内,我正在使用安装我的要求pip。这将安装numpy==1.14,因为这是当前版本,与我的依赖项匹配。

mypackage-xxx-manylinux_x84_64.whl但是,当我在 ubuntu 机器(有 numpy )上安装时1.8,在导入包时收到以下错误

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
RuntimeError: module compiled against API version 0xc but this version of numpy is 0x9
---------------------------------------------------------------------------
ImportError
[...]    
ImportError: numpy.core.multiarray failed to import
Run Code Online (Sandbox Code Playgroud)

明显的解决方法是我运行pip install -U numpy. 但是,我不想告诉我的包的每个用户如果他们的 numpy 库是<1.14(即使它符合我的依赖项要求),则手动运行此命令。与此建议相关的几个问题(例如12)。我是从软件包开发人员的角度在这里问的。首先我可以做什么来防止这种情况发生?

这里的最佳实践是什么?我是否应该专门添加 的依赖项numpy >= …

numpy pip python-wheel python-manylinux

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

谁在我的网址末尾加了一个斜线?

我正在使用mod_rewrite将/ products重写为/products.php.我在/.htaccess中有这段代码

Options FollowSymLinks
RewriteEngine on

RewriteRule ^([a-zA-z]+)$ /$1.php [PT,L]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的服务器上还有一个文件夹/ products /.

我的问题是,当我尝试访问http://mydomain.com/products时,我的请求被重定向到http://mydomain.com/products/并显示错误,因为我没有该目录的索引.

谁在重定向我?Apache,我的UserAgent?如何在不更改文件夹名称或重写规则的情况下防止这种情况发生?

apache mod-rewrite redirect user-agent

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

点击链接不应该触发父母onclick-event

我有以下代码:

<div onclick="alert('div event');" style="cursor:pointer">
    some text
    <a href="asd.php" id="link">click</a>
</div>
Run Code Online (Sandbox Code Playgroud)

当有人点击链接时,会触发javaschipt事件.我希望只有当有人点击文本或div容器内的空白空间时才触发该事件; 而不是如果有人点击链接.

是否可以在触发事件时调用函数,该函数检查用户单击的元素.一些链接

onclick="foo(caller);"
Run Code Online (Sandbox Code Playgroud)

function foo(element){
    if(element!='link'){
        alert('yes');   
    }
} 
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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

有完整的eclipse包吗?

到现在为止我使用Netbeans并且想要尝试eclipse.

我去了eclipse网站,想下载它.我对包裹感到困惑.C,Java,PHP ...开发有不同的包.我想用所有这些语言开发,另外还要用PERL和Python开发.

当我下载其中一个软件包时,是否必须为所有其他语言添加插件,或者是否有一个通用软件包,其中包含许多插件?

php c java eclipse download

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

通过APIv4获取GitHub上公共存储库的列表

借助GitHub的API v3,可以轻松检索包含所有公共可用存储库的列表。我正在寻找一种使用API​​ v4进行相同操作的方法。

根据API v4参考,我进行了两次尝试:

  1. 使用存储库字段。但是此字段需要ownerand name参数。

    query {
      repository(owner: "", name: "") {
        name
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 搜索所有存储库。但是这个search领域需要query争论。

    query {
      search(type: REPOSITORY, query: "") {
        repositoryCount
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

这两个示例都需要其他信息,这限制了结果,因此不适合我的目的。有没有一种方法可以使用API​​ v4获取所有公共存储库的(分页)列表?

github-api

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

文本后面的下拉菜单

我尝试创建一个下拉菜单。这就是我到目前为止所做的: http://gegensinn.org/test.html (我使下拉菜单始终可见以进行“调试”)

我认为问题很明显:菜单位于文本后面。

首先我想我可以用 z-index 来解决这个问题。

虽然我不太确定哪个元素必须获得 z-index 属性。

我尝试将整个菜单设置为z-index:100;并同时z-index:1;设置 .main

后来我尝试只设置 的 z-index<li><a>没有任何效果。

css z-index

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