1

我想让 Web 应用程序的用户输入一个 URL,然后将该 URL 传递给 curl。我宁愿使用 curl 而不是 Net::HTTP 或 open-uri。但这会带来安全风险。检查 URL 字符串并防止任何注入攻击的最佳方法是什么?

我正在考虑使用这样的正则表达式来检查注入攻击:

raise "possible injection attack" if url =~ /[\s']/ 

如果检查成功,那么只需像这样调用 curl

html = `curl '#{url}'`

这足够安全吗?

4

2 回答 2

2
system("curl", url)

这是安全的,因为参数直接传递给main(argv)命令,而不是由命令行处理器解析。例如system("echo", "* && echo shenanigan")字面上的输出* && echo shenanigan

于 2009-12-20T20:10:04.243 回答
1

也许您最好使用libcurl之类的库(以避免必须使用 shell 命令)?

于 2009-12-20T19:18:58.250 回答