Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理POST操作的最安全方法_Php_Html_Forms - Fatal编程技术网

Php 处理POST操作的最安全方法

Php 处理POST操作的最安全方法,php,html,forms,Php,Html,Forms,这是我目前处理提交后操作的方式: <form action="process.php" method="post"> //several form fields <input type="submit" name="ok" value="save" /> 现在我担心恶意的人可能会这样做(从他们网站上的脚本) //他可以在我的网站上“查看源代码”,查看我拥有的字段,然后将它们放进去 //然后按下提交按钮 当然有了这个,你看,我要喝点热汤了。 那么我能做什么,或者处理

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

<form action="process.php" method="post">
//several form fields 
<input type="submit" name="ok" value="save" />
现在我担心恶意的人可能会这样做(从他们网站上的脚本)


//他可以在我的网站上“查看源代码”,查看我拥有的字段,然后将它们放进去
//然后按下提交按钮
当然有了这个,你看,我要喝点热汤了。
那么我能做什么,或者处理和处理提交后操作的最安全方法是什么?

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


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

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


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

这里有两个潜在问题

阻止Mallory向Bob的网站提出恶意请求
  • 对用户进行身份验证(使用OAuth、用户名和密码或其他方式)
  • 在继续执行请求之前,请检查经过身份验证的用户是否有权执行请求所要求的任何操作
  • 阻止马洛里欺骗爱丽丝向鲍勃的网站提出恶意请求
    这是一个很好的例子。这是一个非

    这里有两个潜在的问题

    阻止Mallory向Bob的网站提出恶意请求
  • 对用户进行身份验证(使用OAuth、用户名和密码或其他方式)
  • 在继续执行请求之前,请检查经过身份验证的用户是否有权执行请求所要求的任何操作
  • 阻止马洛里欺骗爱丽丝向鲍勃的网站提出恶意请求
    这是一个很好的例子。这是一个非

    限制对您的
    process.php
    script>的域访问到底哪一部分是“热汤”?因此编程的第一条规则是:永远不要相信用户输入。您应该验证您获得的每个输入是否具有预期的值/范围/格式。如果他将源代码更改为另一个站点,它将不会发布到您的脚本中,因此不会发生任何事情?@sonusindhu
    HTTP\u REFERER
    很容易伪造。限制对您的
    process.php
    script>的域访问,哪一部分是“热汤”确实如此?因此编程的第一条规则是:永远不要相信用户输入。您应该验证您获得的每个输入是否具有预期的值/范围/格式。如果他将源代码更改为另一个站点,它将不会发布到您的脚本中,因此不会发生任何事情?@sonusindhu
    HTTP\u REFERER
    很容易伪造。这让我想起了关于RSA/AES的数学课程。总是鲍勃和爱丽丝吗我相信这会对我有所帮助。我会回复你的。但是上面建议的“防御策略”似乎来自浏览器方面,而不是开发者方面。关于令牌,你的意思是可能会得到一个隐藏字段,其中包含一些我将在处理页面上测试的唯一生成的id?这是一种组合方法。在会话和页面中存储随机生成的令牌。用户的浏览器提交表单(令牌作为隐藏字段),您将提交的表单与会话中的表单进行比较。Mallory不知道令牌,所以不能制作包含它的假表单。这让我想起了我的数学课上关于RSA/AES的内容。总是鲍勃和爱丽丝吗我相信这会对我有所帮助。我会回复你的。但是上面建议的“防御策略”似乎来自浏览器方面,而不是开发者方面。关于令牌,你的意思是可能会得到一个隐藏字段,其中包含一些我将在处理页面上测试的唯一生成的id?这是一种组合方法。在会话和页面中存储随机生成的令牌。用户的浏览器提交表单(令牌作为隐藏字段),您将提交的表单与会话中的表单进行比较。马洛里不知道令牌,所以不能制作包含它的假表单。
    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" />