在我在互联网上找到的以及我用于联系表单的下面的代码中,第一部分似乎与安全有关:
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
此代码是否足够强大以防止标头注入/安全问题? (我不熟悉PHP)
谢谢,
完整代码:
<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
//send email
mail( "dfdsfs@ddfdsfd.com", "From page: ".$_POST['name'], $_POST['message']."\nDepuis la page: ". str_replace("http://", "", $_SERVER['HTTP_REFERER']) . "\n" . $_SERVER ['HTTP_USER_AGENT'], "From:" . $_POST['email'] . "\r\n" . "BCC: dfdsfds@dfdfds.com" );
}
?>
答案 0 :(得分:0)
注入通常发生在数据库中,就代码而言,它是安全的,但更好的方法是使用htmlentities(),stripslashes()函数来实现这个