gpt4 book ai didi

ruby - 如何过滤 Sinatra 记录器中的密码字段?

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:32 24 4
gpt4 key购买 nike

如果我发送表单的参数,例如 'password',在 Sinatra 的日志中我可以看到:

{"api_session":"da1123f8c5edd2d3b7c8b43a4e93b7c2","password":"12323"}

如何使用星号隐藏密码,例如 "******"

例如,在 Rails 中,我可以为参数启用过滤器:

class ApplicationController < ActionController::Base
filter_parameter_logging :password

我可以在 Sinatra 中做同样的事情吗?

最佳答案

你没有展示你是如何在 HTML 中定义你的表单的,但我怀疑你正在使用 method="get" 或者没有指定浏览器应该如何将数据发送到 Sinatra 和让它默认为 get

如果我这样定义表单:

<html>
<body>
<form action="do_form" method="get">
User: <input name="user"><br>
Passwd: <input type=password name="passwd"><br>
<input type="submit">
</form>
</body>
</html>

以此作为我的处理程序:

get '/do_form' do
puts "got user/password"
end

当我使用浏览器提交表单时,我会在控制台中看到:

got user/passwd
127.0.0.1 - - [04/Jan/2013 07:43:24] "GET /do_form?user=foo&passwd=bar HTTP/1.1" 200 - 0.0041

Sinatra 认为输出接收到的参数是安全的。如果我像这样定义表单,也会发生同样的事情:

<form action="do_form">

相反,如果我将其定义为:

<form action="do_form" method="post">

并使用 post 处理程序代替 get:

post '/do_form' do
puts "got user/passwd"
end

我在日志中看到了这个:

got user/passwd
127.0.0.1 - - [04/Jan/2013 07:49:24] "POST /do_form HTTP/1.1" 200 - 0.0015

这是我用来测试的代码:

require 'sinatra'

get '/' do
'
<html>
<body>
<!-- <form action="do_form"> -->
<!-- <form action="do_form" method="get"> -->
<form action="do_form" method="post">
User: <input name="user"><br>
Passwd: <input type=password name="passwd"><br>
<input type="submit">
</form>
</body>
</html>
'
end

get '/do_form' do
puts "got user/passwd"
end

post '/do_form' do
puts "got user/passwd"
end

只需更改 get '/' 处理程序中的表单定义,尝试使用 postget

get 请求在发送表单时将所有参数放入 URL。可以理解的是,Sinatra 那时会在其日志中输出这些参数,因为它们是根据表单的 get 定义“以明文形式”发送的。

将表单更改为使用 post 将参数放入传入数据的主体中,而不是作为 URL 的一部分,从而更有效地隐藏它们以防窥视。 Sinatra 的回应是不在其输出中显示参数。

作为 Web 开发人员,您必须了解使用 getpost 作为表单的 method 的效果。如果您不负责表单,那么无论谁负责,都应该知道使用 get 的效果以及它将参数放入 URL 中。 password 字段,或任何隐藏 或应该不可见的字段,不能在使用 method="get" 的表单中使用因为这是 HTML 和浏览器的预期和定义行为。无论哪种方式,修复表单,其余问题都会得到解决。

关于ruby - 如何过滤 Sinatra 记录器中的密码字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com