How to secure my php forms

时间:2020-05-25 作者:pandglobal

请告诉我如何使用php创建和显示表单的安全建议,我想从安全角度了解我的以下代码是否不受交叉脚本攻击或sql注入或任何形式的攻击或黑客攻击。

$form = \'<div class=demessage>\' . esc_html__($message, "gold") . \'</div>\' ;

$form .= \'<form action="" method="post" name="base">\';
$form .= esc_html__("username:"). \'<input type="text" name="username" value="\'. esc_html__($username) . \'" id="dn1" class="dclogin"/>\';
$form .= esc_html__("Password:"). \'<input type="text" name="password" value="\'. esc_html__($password) . \'" id="dn2" class="dclogin"/>\';
$form .= \'<input type="submit" name="submitlogin" class="submitlogin" value="\'.esc_html__("Login now", "gold") . \'" />\';
$form .= \'</form>\';

1 个回复
最合适的回答,由SO网友:Rick Hellewell 整理而成

这不是表单中的代码,而是如何处理表单数据。

我把这个放在我的主“包含”文件中;它清理所有输入数据。关键是在不验证表单数据是否有效的情况下,永远不要信任表单数据。这段代码在这方面很有帮助。

// this sanitizes all gets/posts for security
$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
googles/bings/ducks拥有大量关于清理数据的资源。但以上是一个良好的开端,IMHO。

Added

输入表单上的代码不能保护任何内容。不需要它。

所需的保护在表单处理端,无论是哪一页。并且filter\\u input\\u array语句需要位于表单处理页面上。

您的代码所做的唯一可能的事情是过滤您在输入标记的“value”元素中使用的变量。例如,如果$name是有人填写的名称,而表单没有处理,或者您之前定义了$name,那么您编码可能会保护这些值。

但真正的保护是在您用来处理页面的代码中。我的filter\\u input\\u array语句将对此有所帮助,但您应该进一步确保变量是“安全的”。

(顺便说一句,这不是WordPress开发的问题。最好研究一下Stack Overflow 论坛。)