0

这是我目前处理我的 POST 提交操作的方式:

<form action="process.php" method="post">
//several form fields 
<input type="submit" name="ok" value="save" />

然后在处理页面上我有这样的东西:

if(isset($_POST['ok']) && $_POST['ok']=="save")
{
    //process the action, and possibly save to database
}

现在我担心恶意的人可能会这样做(来自他们网站上的脚本)

<form action="http://www.mysite.com/process.php" method="post">
//he can "view source" on my site, view the fields i'm having and put them
//then put the submit button
<input type="submit" name="ok" value="save" />

当然有了这个,你看我会喝热汤。那么我能做什么,或者处理和处理 POST 提交操作的最安全方法是什么?

4

2 回答 2

4

这里有两个潜在的问题。

阻止 Mallory 向 Bob 的网站发出恶意请求

  1. 对用户进行身份验证(使用 OAuth、用户名和密码等)
  2. 在继续之前检查经过身份验证的用户是否有权执行请求所要求的任何操作

阻止马洛里欺骗爱丽丝向鲍勃的网站发出恶意请求

这是一个CSRF 攻击。用废话来防御它。

于 2013-07-23T10:47:27.877 回答
2

您在错误的级别上查看问题。当然,您应该首先确保提出请求的人(您有会话,对吗?)具有执行此操作所需的权限。HTML 表单中没有任何内容可以阻止他们执行您所描述的操作,因此您需要确保提交表单的人确实可以这样做。

(从技术上讲,您可以检查推荐人,但这充其量是脆弱的)。

于 2013-07-23T10:43:50.370 回答