我要问的几个问题,首先,你是否填写表格是否重要:
<form action="whatever.php" method="post">
而不是:
<form name="" action="$_SERVER['PHP_SELF']" method="post">
我的意思是我只是列出了whatever.php,因为它拆分我的代码而不是拥有大量的代码文件,我只是传递我的错误消息等会话变量然后立即销毁它们,我只是好奇的什么是优点或缺点,如果我可以做得更好?
下一个问题是表单验证,我被告知它是不是来自数据库,不打扰服务器端验证,只打扰客户端验证...这似乎有点奇怪,不打扰服务器端验证,我觉得我应该同时拥有这两个数据库。
答案 0 :(得分:0)
表单中的操作并不重要。如果您使用带路由器的框架,则URL不会直接映射到PHP文件。代码所在的位置不应由URL确定,但这是在您进入更高级的代码体系结构时。
如果它不是来自数据库,请不要打扰服务器端验证,只打扰客户端验证
反过来说。数据库中的值安全,用户输入从不安全。
答案 1 :(得分:0)
,我被告知它是不是来自数据库,不要打扰 服务器端验证,只对客户端验证感到困扰。
错误!在客户端进行的所有操作都具有潜在的危险性。通过禁用javascript或vbscript(或其他),用户可以绕过任何验证。始终在服务器端验证!还可以考虑Chrome&amp; Firefox Web开发人员工具,任何HTML代码都可以随时更改。
从表单开始,省略action参数或留空(以后更好,否则W3C验证失败)会告诉浏览器将输入发送到同一个文件
考虑以下示例
<?php
if(isset($_POST['submit']))
{
echo $_POST['text'];
}
?>
<hr>
<form action="" method="POST">
<input type="text" name="text">
<input type="submit" value="susbmit">
</form>
脚本将在表单提交
上回显传递给它的内容答案 2 :(得分:0)
如果您在表单中使用$_SERVER['PHP_SELF']
,则action属性将默认为当前网址。这是一种告诉PHP 将表单提交到它来自的地方。
但是,将action
属性留空是可以实现同样的效果。表格将提交给自己。我个人认为这更好。如果您使用$_SERVER['PHP_SELF']
,攻击者可以通过附加URL的file.php
部分来轻松注入恶意代码。将action
属性保留为空可以防止这种情况发生。
来到你的第二个问题,
我被告知它是不是来自数据库,不打扰服务器端验证,只打扰客户端验证
不,那是另一回事。数据库中的值通常是安全的,因为您将它们插入到数据库中。另一方面,用户输入应该不,并且应该正确验证它们。