如何对输入字段和输入处理进行Php安全检查?

时间:2010-07-04 00:13:57

标签: php security validation

如何对输入用户字段进行Php安全检查并输入用户处理(如果可以解决example1 + 2,请问?)

示例1:检查用户是否插入网址或其他内容:

<label>url: </label>
<input type="text">

示例2:检查用户是否插入了html或其他内容

<label>paste html: </label>
<textarea></textarea>

感谢

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

对于字符串过滤/验证,我们使用RegExp,对于html过滤/验证,我们使用DOM extension

答案 2 :(得分:2)

您应该尽量避免使用正则表达式进行输入验证,这会消耗大量CPU。从PHP 5.2开始,对于email,url,ip,string,int,float sanitize和validate都有filter_var。

// Remove wrong characters   
$myURL = filter_var(FILTER_SANITIZE_URL);

// Notice the ===
// If we were checking integer input and imagine zero was a valid input
// do !filter_var($myNumber , FILTER_VALIDATE_INT) will display "Invalid Number"
if (filter_var($myURL , FILTER_VALIDATE_URL) === FALSE)
    echo "Invalid URL"
else
    echo "Valid URL" 

如果您有大量输入,可以使用filter_input_array

答案 3 :(得分:1)

1。用于验证网址:

$validUrl = strpos($url, "http://") === 0;
if(!$validUrl) $url = "http://".$url;

当链接返回给用户时,请使用htmlentities()

2。要验证HTML代码,请使用类似http://htmlpurifier.org/的库。

<?php
require_once 'htmlpurifier/HTMLPurifier.auto.php';

$purifier = new HTMLPurifier();
$clean_html = $purifier->purify($_GET['dirty_html']);
echo $clean_html;
?>

输入:

<img src="test.gif" onload="alert('xss')"/>

结果是:

<img src="test.gif" alt="test.gif" />