gpt4 book ai didi

ruby-on-rails - file_field 在我的 Rails 表单中没有粘性

转载 作者:行者123 更新时间:2023-12-04 06:16:24 25 4
gpt4 key购买 nike

我有一个非常标准的 Rails 表单:

<div>
<h1>Create a New Listing</h1>
<%- form_for @listing, :html => {:multipart => true} do |f| -%>
<div><%= f.label :title, "Title:"%> <%= f.text_field :title %></div>
<div>
<%= f.label :image, "Image:" %> <%= f.file_field :image
</div>
<div>
<%= f.label :sound, "Sound Clip:"%> <%= f.file_field :sound %><br />
</div>
<div class="submit"><%= f.submit 'Post Listing' %></div>
<%- end -%>
</div>

当用户选择了一个文件,但表单验证失败时,他必须始终重新选择该文件。它不粘。关于如何解决这个问题的任何建议?

谢谢!

最佳答案

我认为,您不能使文件字段具有粘性。即使 Rails 提供了初始值,大多数浏览器也会忽略它(否则,一些聪明的人可能会将默认文件设置为 /etc/passwd ,如果你不注意,接下来你就会知道你的盒子是 root 的。

我能想到的最好的方法是设置一个标志,表示文件已经上传,所以如果用户没有选择另一个,请使用上次请求中已经发送的那个。

更新:您会惊讶于有多少人没有任何安全技能。我知道人们使用浏览器作为 root .然而,“为什么”并不完全是一个问题——我试图说明的重点只是这不是 Rails 的错,问题很可能在于浏览器的行为。

您可以阅读an article这比我说的好...

更新 2: “您的盒子已 Root ”应该说“用户的盒子已 Root ”。我描述的场景是这样的:用户提交文件innocent.txt和验证码。恶意服务器响应验证码错误,重新输入,偷偷改文件innocent.txt~/.ssh/id_rsa .用户不查看文件字段(他已经在那里输入了正确的值),因此只需重做 CAPTCHA 并推送提交。现在服务器拥有用户的私有(private) SSH key 。

关于ruby-on-rails - file_field 在我的 Rails 表单中没有粘性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011513/

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