处理安全问题的基本php表单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理安全问题的基本php表单相关的知识,希望对你有一定的参考价值。
php的新手,制作一个将其内容发布到PHP文件的Web表单。 PHP文件需要将数据捆绑到自己的电子邮件中,因为我没有足够的信心将数据直接发送到我们的系统。我上传了一个测试PHP文件到服务器进行测试,并且在周末我收到了一些由该文件发送的空白电子邮件,我认为这意味着有人在没有填写表单的情况下访问该文件。
- 当有人导航到我的php文件时,我是否使用正确的if语句来阻止代码运行?
- 除了webform之外,我怎样才能让.php无法访问?
- 我有任何明显的错误吗?
<?php if($_SERVER["REQUEST_METHOD"] == "POST") { $emailbody = 'Name: '.$_POST['m_title'].' '.$_POST['m_firstname'].' '.$_POST['m_surname']." " .'Email: '.$_POST['m_email']." " .'Phone: '.$_POST['m_phone']." " .'D.O.B: '.$_POST['m_dob_day'].' '.$_POST['m_dob_month'].' '.$_POST['m_dob_year']." " .'Postcode: '.$_POST['m_postcode']." " .'Lenders: '.$_POST['m_bank1'].','.$_POST['m_bank2'].','.$_POST['m_bank3'].','.$_POST['m_bank4'].','.$_POST['m_bank5'].','.$_POST['m_bank6'].','.$_POST['m_bank7'].','.$_POST['m_bank8']; mail('**removed**', 'Web Lead', $emailbody); header('Location: https://www.**removed**' true, 301); } exit();
?>
答案
当有人导航到我的php文件时,我是否使用正确的if语句来阻止代码运行?
不完全是,如果有人使用带有空白表单字段的POST请求访问该文件,它会向您发送一封电子邮件,而不会在帖子中指定变量,如m_title m_email等。
除了webform之外,我怎样才能让.php无法访问?
您可以将CSRF令牌添加到表单
我有任何明显的错误吗?
没有验证,没有逃避可能会导致潜在的安全漏洞。 301没有任何意义,除非你真的想在每次访问带有表单到指定网址的页面时重定向用户。
另一答案
您可以使用前端和后端验证来阻止用户导航到该文件。
- [前端]使用所需的Web表单字段[html]。
- [Backend]仅在$ POST ['required_field']!= NULL时发送邮件。
另一答案
请确保所有必需的数据来自请求。
<?php
if($_SERVER["REQUEST_METHOD"] =="POST") {
If(isset($_POST['m_firstname']) && $_POST['m_firstname']!=''){
If(isset($_POST['m_title']) &&$_POST['m_title']!=''){
//likewise check for required data are coming from request.
$emailbody = 'Name: '. $_POST['m_title'].' '.$_POST['m_firstname'].' '.$_POST['m_surname']."
" .'Email: '.$_POST['m_email']."
" .'Phone: '.$_POST['m_phone']."
" .'D.O.B: '.$_POST['m_dob_day'].' '.$_POST['m_dob_month'].' '.$_POST['m_dob_year']."
" .'Postcode: '.$_POST['m_postcode']."
" .'Lenders: '.$_POST['m_bank1'].','.$_POST['m_bank2'].','.$_POST['m_bank3'].','.$_POST['m_bank4'].','.$_POST['m_bank5'].','.$_POST['m_bank6'].','.$_POST['m_bank7'].','.$_POST['m_bank8']; mail('**removed**', 'Web Lead', $emailbody); header('Location: https://www.**removed**' true, 301);
}else{
Echo 'title required';
}
}else{
Echo 'name required';
}
} exit();
这将帮助您停止必要的邮件操作。
否则,单击“检查提交”按钮
<?php
If(isset($_POST['submit'])){
// put mail function here
}
我希望这能帮到您 :)
以上是关于处理安全问题的基本php表单的主要内容,如果未能解决你的问题,请参考以下文章