我试图通过SO查找类似的问题,但我无法找到一个,也是我竭尽全力在网上搜索,对不起,如果这是一个愚蠢/重复的问题
我的问题的论坛是:
如果我的表单中包含未编码的密码,那么它是否安全&#34;将表格传回[self],即<form action="">
编辑:我想关注第三方的安全性,假设用户自己不是黑客。
我知道我的问题可能有点广泛,所以我将其缩小到我感兴趣的东西。我最感兴趣的是:
1)服务器是否将提交表单作为内部转发事件处理为自己,还是将其视为正常的服务器到服务器http调用?
2)是否有可能以某种方式拦截表单提交并从此操作中提取密码? (包括点击服务器和客户端之间的连接?)
如果有人知道[提交给自己]的任何潜在安全问题,请随时留下答案,以便未来的SO用户可以从中受益,谢谢。
答案 0 :(得分:2)
向网页提交数据唯一安全的方法是永远不要信任用户输入。
现在关于你的两个问题:
使用像Mozilla的FireBug这样的开发人员工具,可以很容易地更改通过表单提交的所有数据。您甚至不必使用您的网页,可以使用Telnet等工具轻松欺骗您的页面的POST请求。
所以我要说这个形式的动作是什么并不重要;尽可能使用HTTPS并始终验证输入...
答案 1 :(得分:1)
您是否将表单提交到同一页面不会产生任何安全隐患。您可以/应该采取许多其他措施来保护表单。提交给自己是无关紧要的。它可能会造成用户体验烦恼。您是否尝试刷新页面只是让浏览器尝试重新提交表单。
不是重定向。正常的帖子。然而,为了减轻这种用户体验的烦恼我 提到,你做任何事后都会重定向到同一页面 你需要使用数据。
除了表单是否提交给自己之外,还取决于许多其他事项。从您的表单开始就是安全(https)服务器。
答案 2 :(得分:0)
经过多次更新后
动作=&#34;&#34;与action =&#34; somefile&#34;相同在安全感方面。所以action =&#34;&#34;并没有什么不妥,据我所知,大多数网站都会对待这样的表单。最受欢迎的解决方案是:
一个简单的例子:
<?php
$name = '';
if (isset $_POST['name']) {
$name = $_POST['name'];
if (ctype_alpha(str_replace(' ', '', $name)) !== false) { // verify data
// in that case name consist only letters and spaces, it is ok.
// do something with data here, for example save to database
header('Location: successfile'); // Remove post data after all
}
}
// render form
$name = htmlspecialchars($name); // if name was in POST, here it is!
echo '<form action="" method="post" />'
echo '<label id="name" name="name" value="'.$name.'" />';
echo '</form>';
?>
在这种情况下,一个文件正在执行两个作业。它会检查数据并对其执行某些操作,然后呈现表单。
请记住,表格可以使用&#34;部分&#34;来自提交的数据(POST)。因此,例如,如果有人使用特殊字符输入他的名字,而您只需要使用字母和空格命名,则不会遗漏数据。您可以渲染表单,并在输入名称值中输入错误的发布数据。 因此表格&#34;记住&#34;什么被填补,什么没有填补。
希望有所帮助
答案 3 :(得分:0)
我只是在搜索这类帖子。 是啊..
据我所知,这不是一种有效的方法, 攻击者可以更改下载内容的方法,就像他可以使用从POST到GET的参数。 我们实际上有像篡改数据这样的工具,它是firefox浏览器的插件。我们可以发布数据或篡改表格提交的数据。您可以将此插件添加到浏览器中,并且可以在提交表单之前通过单击篡改来检查数据是否可以修改。您还可以查看在线http篡改,篡改数据,修改实时标头以更改数据。这也可能导致sql注入。 如我错了请纠正我。 :) 欢呼声。