güvenli e-posta formu, başlığı enjeksiyon sorgu

2 Cevap php

Ben iletişim formundan girişi temizlemek için aşağıdaki kullanıyorum:

<?php
$name = strip_tags(stripslashes($_POST['name']));
//this is repeated for several other fields, then:

if(isInjected($name)) { die(); }
/* see isInjected function below */

// send the mail
?>

Ben bu işlevi kullanarak ediyorum:

<?php
    /* function from http://phpsense.com/php/php-mail.html */
    function isInjected($str) {
        $injections = array('(\n+)',
        '(\r+)',
        '(\t+)',
        '(%0A+)',
        '(%0D+)',
        '(%08+)',
        '(%09+)'
        );
        $inject = join('|', $injections);
        $inject = "/$inject/i";
        if(preg_match($inject,$str)) {
        	return true;
        }
        else {
        	return false;
        }
    }
?>

Bu benim iletişim formu temizlemek için yeterli mi?

teşekkürler.

2 Cevap

Bu prettey iyi ve ortalama inputvalidation daha iyi görünüyor. Personanlly Ben de inputtypes taşıma tercih ederim. Benim basecontroller ben size IMO iyi idare ediyorsun mevcut doğrulama tür doğrulama eklerseniz giriş doğum EMAILADDRESS vb geçerli bir tarih wether çeşitli fonksiyonları kontrol etmek zorunda.

Bir yan not olarak bu kodu biraz şişirilmiş. Bu oldukça kolay aşağı kesilmiş olabilir:

/* function from http://phpsense.com/php/php-mail.html */
function isInjected($str) {
    $inject = "/(\r|\t|%0A|%0D|%08|%09)+/i";
    return (preg_match($inject, $str) > 0);
}