次のような被保険者の詳細を取得しながら、被保険者IDをコントローラーに渡したい:
// GET: /被保険者/詳細/123456789
しかし、セキュリティ上の理由から、この ID 番号 123456789 をクエリ文字列に渡したくありません。誰かが私に最善の方法を提案できますか。私はMVCが初めてです。
ありがとう
次のような被保険者の詳細を取得しながら、被保険者IDをコントローラーに渡したい:
// GET: /被保険者/詳細/123456789
しかし、セキュリティ上の理由から、この ID 番号 123456789 をクエリ文字列に渡したくありません。誰かが私に最善の方法を提案できますか。私はMVCが初めてです。
ありがとう
コントローラーで入力をサニタイズする必要があります。たとえば、顧客がログインしている場合、コントローラーに渡された ID が本当に顧客のものであることを確認できます。
リクエストで通過できるものはすべて (POST か GET かに関係なく) スプーフィング可能です。
また、HTTPS 経由でページを提供することも検討する必要があります。
例 (asp.net MVC / C#)
public ActionResult Details(string id)
{
if (Check(id) == false)
{
// Handle invalid input
throw new HttpException(404, "HTTP/1.1 404 Not Found");
}
// create the model
...
}
POST を介して非表示のパラメーターとして値を送信してみてください。ただし、POST 送信を行うにはフォームを使用する必要があります。リンクを使用することはできません。
<form method="POST" action="/Insured/Details">
<input type="hidden" name="insuredid" value="123456789"/>
<input type="submit"/>
</form>
次に、リクエスト パラメータを介して値を取得します。Java サーブレットを使用する場合は、次のようになります。
String myInsuredId = request.getParameter("insuredid");
他のプラットフォームでも同様に見えると思います。
注: 非表示のパラメーターとして値を渡すと、データが表示されなくなりますが、送信されたデータを傍受したり、ページの HTML ソースを確認したりすることはできません。これを本当に安全にしたい場合は、何らかの形式の暗号化/セキュリティを使用する必要があります。HTTPS 投稿を調べてみてください。