【发布时间】:2009-12-20 19:02:44
【问题描述】:
我想让 Web 应用程序的用户输入一个 URL,然后将该 URL 传递给 curl。我宁愿使用 curl 而不是 Net::HTTP 或 open-uri。但这会带来安全风险。检查 URL 字符串并防止任何注入攻击的最佳方法是什么?
我正在考虑只使用这样的正则表达式来检查注入攻击:
raise "possible injection attack" if url =~ /[\s']/
如果检查成功,则像这样调用 curl
html = `curl '#{url}'`
这样够安全吗?
【问题讨论】:
-
这似乎是个坏主意 (tm) ...您对使用 ruby 下载 HTML 有什么反感?如果您正在寻找简单性,请查看curb.rubyforge.org
-
与 curl 的手册页相比,我发现 Net::HTTP 的文档很难导航和理解。尝试将工作从 Ruby 程序委托给另一个 unix 程序有什么问题吗?
-
我也知道open-uri,但我经常想做http响应和请求头的事情,使用curl比使用Net::HTTP更容易。
标签: ruby curl code-injection