PHP ອີເມວທີ່ປອດໄພ
ບັນຫາທີ່ມີໃນວິກາດ PHP e-mail ກ່າວກ່ອນແມ່ນວ່າມີຄວາມສ່ຽງ.
PHP E-mail 注入
ກ່ອນໜ້ານີ້ບໍ່, ບັນຍາຍບັນທຶກ PHP ໃນກາງວັດສະດຸນີ້:
<html> <body> <?php if (isset($_REQUEST['email'])) //ຖ້າ "email" ມີການບັນທຶກ, ສົ່ງອີເມວ { //ສົ່ງອີເມວ $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //ຖ້າ "email" ບໍ່ມີການບັນທຶກ, ສະແດງບອກຄຳ { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
ບັນຫາທີ່ມີໃນວິກາດກ່າວກ່ອນແມ່ນວ່າຜູ້ນຳໃຊ້ທີ່ບໍ່ມີອະນຸຍາດສາມາດເຂົ້າມາສະໜອງຂໍ້ມູນໃນຫົວໜ້າອີເມວຜ່ານບອກຄຳທີ່ມີສະໜອງ.
ຖ້າຜູ້ນຳໃຊ້ເພີ່ມບັນທຶກນີ້ເຂົ້າໃນບອກຄຳເຂົ້າຫນັງບາງສິ່ງຈະເກີດຫຍັງ?
someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com
ຄືກັນກັບເວລາທີ່ຜ່ານມາ, mail() ກັບຂຽນຂໍ້ຄວາມຂອງພວກເຂົາເຂົ້າໃນຫົວຂໍ້ອີເມວ, ປັດຈຸບັນຫົວຂໍ້ອີເມວມີອີກຖານຂັ້ນຕອນ Cc:, Bcc: ແລະ To:. ເມື່ອຜູ້ນຳໃຊ້ຄົ້ນຫາຄຳສັ່ງຂຽນ, ອີເມວນີ້ຈະຖືກສົ່ງໄປທຸກລາຍຊື່ທີ່ກ່ຽວຂ້ອງ!
PHP ປ້ອງກັນການບົງອີເມວ
ວິທີທີ່ດີທີ່ສຸດທີ່ຈະປ້ອງກັນການບົງອີເມວແມ່ນກວດກາຂໍ້ມູນການເຂົ້າ.
ລະຫັດກ່າວຫານີ້ກັບການຂຽນກ່ອນ, ແຕ່ພວກເຮົາໄດ້ເພີ່ມຂັ້ນຕອນກວດກາການຂຽນຂອງບົດສະຫລະ email:
<html> <body> <?php function spamcheck($field) { //filter_var() ປັບປຸງອີເມວ $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() ກວດກາອີເມວ if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } } if (isset($_REQUEST['email'])) {//ຖ້າ "email" ຖືກຂຽນແລ້ວ, ດຳເນີນ //ກວດກາທີ່ອີເມວບໍ່ມີຜົນ $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else //ສົ່ງອີເມວ $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
ຫົວຂໍ້
- ຫົວຂໍ້
- ຫົວຂໍ້
ຫົວຂໍ້ ຫົວຂໍ້ຫົວຂໍ້