PHP $_POSTに対応するシェルスクリプト

PHP $_POSTに対応するシェルスクリプト

POSTたとえば、学習目的でテキストフィールドを送信する方法を使用するWebページがあります。スクリプト(bash)を実行しているサーバーがあり、「Query_string」が何であるかを表示したいと思います。私もPHPについてはよくわかりませんが、$_POST送信されたテキストを印刷するために使用されると仮定します。私が使用するスクリプトはbashです。送信されたテキストを印刷するには何を使用できますか?

ベストアンサー1

最初のコメントで指摘したように、CGI仕様では、POSTデータは標準入力にあり、書式化enctypeを使用してエンコードされていることが示されています。ただし、すべてのメソッドがサポートされている必要があります: multipart/form-data, application/x-www-form-urlencodedHTML5'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/plainstdinから完全な入力をそのまま取得してください。これはフォーム送信ではなくファイルをアップロードするためのものです。 URLやMIMEをデコードすることなく、stdinファイル記述子を他のプロセスに安全に提供できます。

他人の警告に答えたいです。 Shellshockへのパッチが適用されていない場合、攻撃者がCGIを実行することを許可するだけでシステムを悪用することができます(攻撃者がしなければならないのは、一般的なシェルコマンドをすべてオーバーライドするだけであり、ユーザーが使用するコマンドを確実に見つけることです)です)。 。

おすすめ記事