略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: Sanitization

2024-11-12

Sanitization

示例 #1 Sanitizing and validating email addresses

<?php
$a 
'joe@example.org';
$b 'bogus - at - example dot org';
$c '(bogus@example.org)';

$sanitized_a filter_var($aFILTER_SANITIZE_EMAIL);
if (
filter_var($sanitized_aFILTER_VALIDATE_EMAIL)) {
    echo 
"This (a) sanitized email address is considered valid.\n";
}

$sanitized_b filter_var($bFILTER_SANITIZE_EMAIL);
if (
filter_var($sanitized_bFILTER_VALIDATE_EMAIL)) {
    echo 
"This sanitized email address is considered valid.";
} else {
    echo 
"This (b) sanitized email address is considered invalid.\n";
}

$sanitized_c filter_var($cFILTER_SANITIZE_EMAIL);
if (
filter_var($sanitized_cFILTER_VALIDATE_EMAIL)) {
    echo 
"This (c) sanitized email address is considered valid.\n";
    echo 
"Before: $c\n";
    echo 
"After:  $sanitized_c\n";    
}
?>

以上例程会输出:

This (a) sanitized email address is considered valid.
This (b) sanitized email address is considered invalid.
This (c) sanitized email address is considered valid.
Before: (bogus@example.org)
After: bogus@example.org

示例 #2 Configuring a default filter

filter.default = full_special_chars
filter.default_flags = 0
add a noteadd a note

User Contributed Notes 2 notes

up
10
zeeshan dot karamat dot abbas at gmail dot com
7 years ago
If we omit using a filter then PHP by default puts a filter which is FILTER_DEFAULT which will use default filter. Now the question is what is a default filter. A default filter is unsafe_raw which will allow the unsafe raw data passed on to the server. This value is available in php.ini file. It is suggested that a developer should update this value inside php.ini file as under:
filter.default = full_special_chars
filter.default_flags = 0

Whereas in php.ini file above values are by default, set as under:
;filter.default = unsafe_raw
;filter.default_flags =

Above semicolons are commented out lines so surely one needs to remove those semicolons to apply the changes made. If we do not do above things then what will happen. In that case PHP will use default filter which would surely be FILTER_UNSAFE_RAW and one can see that unsafe raw data can then be passed onto server which can make the life a hacker easier.
up
3
Chris
7 years ago
While it may seem to be good practice to set the defaults in php.ini you should not assume that the end users server has the same settings as your server. Because of this you should not presume that default filtering will work out of the box for the end user.

You should ensure that all filters are declared at the site of use regardless of your own default settings. A move to a new host even for your own personal application may break due to different settings.

官方地址:https://www.php.net/manual/en/filter.examples.sanitization.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3