小编Myr*_*ton的帖子

使用RSpec和VCR测试Web API

我正在编写一个API包装器作为gem,我想使用RSpec测试API响应.

这个问题是所有的API请求都是使用GET生成的,并且在url中包含一个API密钥:

例如 game/metadata/{api_key}

这给测试带来了问题,因为我不想将API密钥保存在git存储库历史记录中.有什么方法可以进行这些规范测试,最好使用RSpec/VCR,而不是将API密钥存储在版本控制中?

我尝试过使用环境变量,但VCR仍然存储整个请求,而不仅仅是响应体.

ruby api rspec vcr

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

如何解决为什么我的重写规则没有被apache应用?

我有一个运行apache httpd作为前端的tomcat 6 web应用程序.我正在使用mod_proxy和mod_proxy_ajp将请求转发给tomcat.我的服务器正在运行ubuntu.现在我正在尝试使用mod_rewrite删除领先的www,以便我的规范网站网址是http://domain.com而不是http://www.domain.com

我已经阅读了很多关于使用mod_rewrite的教程,但我无法进行任何重写.我已经尝试将重写规则放在.htaccess文件中(在修改我的/ etc/apache/sites-available/default文件以设置AllowOverride all之后).我已经尝试将重写规则放在apache2.conf,httpd.conf和rewrite.conf中.我已经尝试了所有这些,并打开了重写日志.日志文件被创建,但是apache没有写任何内容.我想也许mod_proxy在某种程度上阻止了重写规则的使用,所以我也尝试禁用它...而且我仍然没有重写,也没有任何重写.

在这一点上,我完全不知道下一步该尝试什么.我如何解决为什么apache没有使用我的重写规则?

作为参考,这是我的重写指令:

<IfModule mod_rewrite.c>

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
    RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
    RewriteLog "/var/log/apache2/rewrite.log"
    RewriteLogLevel 3

</IfModule>
Run Code Online (Sandbox Code Playgroud)

编辑:下面的回复对我的特定情况有帮助,但可能对整个社区没有帮助,因为答案是关于如何解决apache指令的一般问题.例如,有没有办法启用日志记录,它会告诉我在请求进入时以哪种顺序应用哪些指令?

编辑2:我现在已经开始工作了.我的虚拟主机设置不正确,我也没有正确的重写正则表达式.这是我开始工作的最终重写指令:

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
        RewriteRule ^(.*)$ http://domain.com$1 [L,R=301]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite tomcat

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

如何检测隐藏的现场篡改?

在我的网络应用程序的一种形式上,我有一个隐藏的字段,我需要防止因安全原因而被篡改.我正在尝试提出一个解决方案,我可以检测隐藏字段的值是否已更改,并做出适当的反应(即使用通用的"出错了,请再试一次"错误消息).解决方案应该足够安全,暴力攻击是不可行的.我有一个基本的解决方案,我认为它会起作用,但我不是安全专家,我可能在这里完全遗漏了一些东西.

我的想法是渲染两个隐藏的输入:一个名为"important_value",包含我需要保护的值,一个名为"important_value_hash",包含与一个常量长随机字符串连接的重要值的SHA哈希(即相同的字符串将每次都使用).提交表单时,服务器将重新计算SHA哈希值,并与提交的important_value_hash值进行比较.如果它们不相同,则important_value已被篡改.

我还可以使用SHA的输入字符串(可能是用户的IP地址?)连接其他值,但我不知道这是否真的让我获益.

这会安全吗?任何人都可以了解它是如何被打破的,以及可以/应该做些什么来改进它?

谢谢!

html security webforms hidden-field

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

通过标签使用带有黄瓜的VCR

我有一些需要与Google Maps Routing API交互的Cucumber功能.我正在尝试使用VCR来消除这些交互.

我在我的功能中添加了一个VCR标签,如下所示:

@google_routing_api @javascript
Scenario: Creating a bus
  Given I am on the buses page
  When I follow "Get Started Now"
Run Code Online (Sandbox Code Playgroud)

然后添加了我的VCR配置 features/support/vcr.rb

require 'vcr'

VCR.config do |c|
  # INFO: This is relative to the Rails.root
  c.cassette_library_dir = 'features/fixtures/vcr_cassettes'
  c.stub_with :fakeweb
end

# INFO: https://github.com/myronmarston/vcr/wiki/Usage-with-Cucumber
VCR.cucumber_tags do |t|
  t.tag '@google_routing_api'
end
Run Code Online (Sandbox Code Playgroud)

但是当我举起我的傻瓜时,我被告知......

Real HTTP connections are disabled. Unregistered request: GET http://127.0.0.1:54181/__identify__
Run Code Online (Sandbox Code Playgroud)

testing bdd cucumber vcr

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

标签 统计

vcr ×2

apache ×1

api ×1

bdd ×1

cucumber ×1

hidden-field ×1

html ×1

mod-rewrite ×1

rspec ×1

ruby ×1

security ×1

testing ×1

tomcat ×1

webforms ×1