我想知道是否有更好或更多的方式/解决方案来保护对公众开放的表格。
我想尽可能保证安全。
<?php
ob_start();
$sub_firstname = trim($_POST["firstname"]);
$sub_lastname = trim($_POST["lastname"]);
$sub_email = trim($_POST["email"]);
$sub_youtube_v = trim($_POST["youtube-v"]);
$sub_youtube_c = trim($_POST["youtube-c"]);
$sub_portfoliolink = trim($_POST["portfolio-link"]);
$sub_picturelink = trim($_POST["picture-link"]);
include('../dbconnect.php');
if (empty($sub_firstname) || empty($sub_lastname ) || empty($sub_email) || empty($sub_youtube_v)
|| empty($sub_youtube_c) || empty($sub_portfoliolink) || empty($sub_picturelink)) {
header ("Location: ../index.php?appform=empty");
exit;
}
$sub_firstname = $mysqli->real_escape_string($sub_firstname);
$sub_lastname = $mysqli->real_escape_string($sub_lastname);
$sub_email = $mysqli->real_escape_string($sub_email);
$sub_youtube_v = $mysqli->real_escape_string($sub_youtube_v);
$sub_youtube_c = $mysqli->real_escape_string($sub_youtube_c);
$sub_portfoliolink = $mysqli->real_escape_string($sub_portfoliolink);
$sub_picturelink = $mysqli->real_escape_string($sub_picturelink);
htmlspecialchars($sub_firstname);
htmlspecialchars($sub_lastname);
htmlspecialchars($sub_email);
htmlspecialchars($sub_youtube_v);
htmlspecialchars($sub_youtube_c);
htmlspecialchars($sub_portfoliolink);
htmlspecialchars($sub_picturelink);
if (!$mysqli->query("INSERT INTO ********* (firstname, lastname, email, youtube_v, youtube_c, portfolio_link, picture_link) VALUES('$sub_firstname', '$sub_lastname', '$sub_email', '$sub_youtube_v', '$sub_youtube_c', '$sub_portfoliolink', '$sub_picturelink')")) {
echo "Insert failed: (" . $mysqli->errno . ") " . $mysqli->error;
die();
}else{
header("Location: ../index.php?appform=success");
exit;
ob_flush();
}
?>
答案 0 :(得分:0)
您可能正在寻找的一件主要事情是CSLF token。这实际上是表单上随机生成的令牌,它作为隐藏输入提交,然后在表单处理器中进行身份验证。这将有助于解决跨站点伪造攻击。
您实际上是在检查以确保表单来自您,而不是由外部资源提交。
答案 1 :(得分:0)
使用html字符:
<form method="post" action="<?php echo htmlspecialchars(/*Page name and extension here with root*/);?>">
如果您需要,请使用表单表单: 参考(对不起):
http://code.tutsplus.com/tutorials/secure-your-forms-with-form-keys--net-4753
使用SSL 只需谷歌并免费获得一个SSl证书或支付一个。
使用CSRF保护 参考(对不起):
http://shiflett.org/articles/cross-site-request-forgeries
不仅仅是评论。