POST
たとえば、学習目的でテキストフィールドを送信する方法を使用するWebページがあります。スクリプト(bash)を実行しているサーバーがあり、「Query_string」が何であるかを表示したいと思います。私もPHPについてはよくわかりませんが、$_POST
送信されたテキストを印刷するために使用されると仮定します。私が使用するスクリプトはbashです。送信されたテキストを印刷するには何を使用できますか?
ベストアンサー1
最初のコメントで指摘したように、CGI仕様では、POSTデータは標準入力にあり、書式化enctypeを使用してエンコードされていることが示されています。ただし、すべてのメソッドがサポートされている必要があります: multipart/form-data
, application/x-www-form-urlencoded
HTML5'stext/plain
以下は、使用できる非常に高速なテストスクリプトです。
#!/bin/sh
echo Content-type: text/plain
echo
echo Environment
printenv
echo POST contents
cat
CONTENT_TYPE変数は、データで使用される方法に設定されます。
その場合、application/x-www-form-urlencoded
古典的なkey=value&key=value構文が表示され、URLエスケープを覚えておく必要があります。
もしそうなら、multipart/form-data
これはMIMEであり、MIMEパーサーをターゲットにした以前の攻撃があったことに注意する必要があります。
新しいHTML5の場合は、text/plain
stdinから完全な入力をそのまま取得してください。これはフォーム送信ではなくファイルをアップロードするためのものです。 URLやMIMEをデコードすることなく、stdinファイル記述子を他のプロセスに安全に提供できます。
他人の警告に答えたいです。 Shellshockへのパッチが適用されていない場合、攻撃者がCGIを実行することを許可するだけでシステムを悪用することができます(攻撃者がしなければならないのは、一般的なシェルコマンドをすべてオーバーライドするだけであり、ユーザーが使用するコマンドを確実に見つけることです)です)。 。