如何对输入用户字段进行Php安全检查并输入用户处理(如果可以解决example1 + 2,请问?)
示例1:检查用户是否插入网址或其他内容:
<label>url: </label>
<input type="text">
示例2:检查用户是否插入了html或其他内容
<label>paste html: </label>
<textarea></textarea>
感谢
答案 0 :(得分:2)
USE正则表达式验证您的输入
见
http://www.webcheatsheet.com/php/regular_expressions.php
http://articles.sitepoint.com/article/regular-expressions-php
http://www.roscripts.com/PHP_regular_expressions_examples-136.html
答案 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" />