1

Web アプリのユーザーが URL を入力し、その URL を curl に渡せるようにしたいと考えています。私は、Net::HTTP や open-uri よりも curl を使用したいと考えています。しかし、これはセキュリティ上のリスクをもたらします。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のようなライブラリを使用した方がよいのではないでしょうか(シェル コマンドを使用する必要がないようにするため)。

于 2009-12-20T19:18:58.250 に答える