[英]Detecting a URL using PHP preg_match that allows the absence of www
[英]PHP detecting tags in url with preg_match
我正在尝试通过添加以下内容在准备好的语句之上添加一层安全性:
if (preg_match('#[@*,!$\'\-;:~`^|\(\\)\\{\\}\\[\\]]#i', $_SERVER['REQUEST_URI']) || strpos($_SERVER['REQUEST_URI'],'script')) {
echo 'Cannot do that';
}
我尝试将([\\<])([^\\>]{1,})*([\\>])
到那里,但是没有用。 我还尝试添加条件,如果strcmp($_SERVER['REQUEST_URI'], strip_tags($_SERVER['REQUEST_URI'])) != 0
当我添加到URL时,它什么也没做
任何帮助表示赞赏!
您不需要验证URL。 似乎您正在尝试防止XSS-为此,您应确保转义输出,而不是验证URL。 如果您真的想用url中的html阻止请求,则可以查看一些可以立即使用的解决方案,例如mod_security
第一个是您要匹配的标签,第二个是包含XML或HTML的变量。 再一次,它可以和cURL一起非常强大地使用。
function get_tag( $tag, $xml ) {
$tag = preg_quote($tag);
preg_match_all('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>.'}',
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[1];
}
匹配具有特定属性值的XHTML / XML标签
此功能与上一个功能非常相似,但是它允许您匹配具有特定属性的标签。 例如,您可以轻松匹配。
function get_tag( $attr, $value, $xml, $tag=null ) {
if( is_null($tag) )
$tag = '\w+';
else
$tag = preg_quote($tag);
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*".
"(['\"])$value\\2[^>]*>(.*?)<\/\\1>/"
preg_match_all($tag_regex,
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[3];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.