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的网站提出恶意请求
这是一个很好的例子。这是一个非 这里有两个潜在的问题 阻止Mallory向Bob的网站提出恶意请求
这是一个很好的例子。这是一个非 限制对您的
process.php
script>的域访问到底哪一部分是“热汤”?因此编程的第一条规则是:永远不要相信用户输入。您应该验证您获得的每个输入是否具有预期的值/范围/格式。如果他将源代码更改为另一个站点,它将不会发布到您的脚本中,因此不会发生任何事情?@sonusindhuHTTP\u REFERER
很容易伪造。限制对您的process.php
script>的域访问,哪一部分是“热汤”确实如此?因此编程的第一条规则是:永远不要相信用户输入。您应该验证您获得的每个输入是否具有预期的值/范围/格式。如果他将源代码更改为另一个站点,它将不会发布到您的脚本中,因此不会发生任何事情?@sonusindhuHTTP\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" />