php过滤xss函数
㈠ php防止sql注入漏洞有哪些函数
|Version:0.9
StartHTML:-1
EndHTML:-1
StartFragment:0000000111
EndFragment:0000022042
/**
* 检查数据
* @param $args
* @return mixed
*/
function check_data($args)
{
$args_arr=array(
'xss'=>"(EXTRACTVALUE||UPDATEXML)\\b.+?(select|concat)|[\\'\\\"\\;\\*\\<\\>].*\\bon[a-zA-Z]{3,15}[\\s\\r\\n\\v\\f]*\\=|\\b(?:expression)\\(|\\<script[\\s\\\\\\/]|\\<\\!\\[cdata\\[|\\b(?:eval|alert|prompt|msgbox)\\s*\\(|url\\((?:\\#|data|javascript)",
'sql'=>"(EXTRACTVALUE|EXISTS|UPDATEXML)\\b.+?(select|concat)|[^\\{\\s]{1}(\\s|\\b)+(?:select\\b|update\\b|insert(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+into\\b).+?(?:from\\b|set\\b)|[^\\{\\s]{1}(\\s|\\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+(?:table\\b|from\\b|database\\b)|into(?:(\\/\\*.*?\\*\\/)|\\s|\\+)+(?:mp|out)file\\b|\\bsleep\\([\\s]*[\\d]+[\\s]*\\)|benchmark\\(([^\\,]*)\\,([^\\,]*)\\)|(?:declare|set|select)\\b.*@|union\\b.*(?:select|all)\\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\\(|(?:master\\.\\.sysdatabases|msysaccessobjects|msysqueries|sysmoles|mysql\\.db|sys\\.database_name|information_schema\\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\\.dbms_export_extension)",
'other'=>"\\.\\.[\\\\\\/].*\\%00([^0-9a-fA-F]|$)|%00[\\'\\\"\\.]"
);
foreach($args_arr as $key=>$value)
{
if (preg_match("/".$value."/is",$args) == 1)
{
//W_log("<br>IP: ".$_SERVER["REMOTE_ADDR"]."<br>时间: ".strftime("%Y-%m-%d %H:%M:%S")."<br>页面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交数据: ".$str);
//print "您的提交带有不合法参数,谢谢合作";
api_inc::error("您的提交带有不合法参数,谢谢合作!");
exit();
}
}
return $args;
}
㈡ php下怎样防止XSS攻击
在PHP中修补XSS漏洞,我们可以使用三个PHP函数。
这些函数主要用于清除HTML标志,这样就没办法注入代码了。使用更多的函数是htmlspecialchars() ,它可以将所有的"<"与">"符号转换成"<" 与">;"。其它可供选择的函数还有htmlentities(), 它可以用相应的字符实体(entities)替换掉所有想要替换掉的特征码(characters)。
PHP Code:
<?
// 这里的代码主要用于展示这两个函数之间输出的不同
$input = '<script>alert(1);</script>';
echo htmlspecialchars($input) . '<br />';
echo htmlentities($input);
?>
htmlentities()的另一个例子
PHP Code:
<?php
$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str);
echo htmlentities($str, ENT_QUOTES);
?>
第一个显示: A 'quote' is <b>bold</b>
第二个显示:A 'quote' is <b>bold</b>
htmlspecialchars()使用实例
PHP Code:
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new;
?>
显示: <a href='test'>Test</a>
strip_tags()函数代替.删除所有的HTML元素(elements),除了需要特别允许的元素之外,如:<i>, <b> 或<p>.
strip_tags()使用实例
PHP Code:
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> Other text';
echo strip_tags($text);
echo "\n";
// allow <p>
echo strip_tags($text, '<p>');
?>
现在我们至少已经知道有这些函数了,当我们发现我们的站点存在XSS漏洞时就可以使用这些代码了。我最近在我的站点上的GoogleBig(一个Mybb论坛的插件)视频部分发现了一个XSS漏洞,因此我就在想如何使用这些函数写段代码来修补这个搜索漏洞。
首先我发现问题出在search.php这一文件上,现在让我们看看这个查询及输出查询结果中的部分代码研究一下:
PHP Code:
function search($query, $page)
{
global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $mole_url, $list_page_items, $hm_index;
$option = trim($option);
$query = trim($query);
$query = FixQuotes(nl2br(filter_text($query)));
$db->escape_string($query);
$db->escape_string($option);
alpha_search($query);
...
在这种情况下,我们通过使用$query这一值作为变量,然后使用htmlentities()这一函数:
PHP Code:
$query = FixQuotes(nl2br(filter_text(htmlentities($query))));
如果你对这三种函数还有有疑问可以使用PHP手册来查看:
http://it.php.net/htmlentities
http://it2.php.net/htmlspecialchars
http://it2.php.net/strip_tags
㈢ 看看我这个PHP代码怎么防止跨站脚本攻击(XSS)
很遗憾,你这代码乱得很,而且看起来是后端处理代码,并不是xss关键处理代码,xss一般在入库前进行转义
㈣ 几个有用的php字符串过滤,转换函数
explode — 使用一个字抄符袭串分割另一个字符串
array explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。
<?php// 示例 1$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";$pieces = explode(" ", $pizza);echo $pieces[0]; // piece1echo $pieces[1]; // piece2 // 示例 2$data = "foo:*:1023:1000::/home/foo:/bin/sh";list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);echo $user; // fooecho $pass; // * ?>
㈤ php xss防护代码
举个例子过滤 $_POST['name']
<?php
if (isset($_POST['name'])){
$str = trim($_POST['name']); //清理空格
$str = strip_tags($str); //过滤html标签
$str = htmlspecialchars($str); //将字符内容转化为html实体
$str = addslashes($str);
echo $str;
}
?>
㈥ 如何用php函数修补XSS漏洞
最好的办法就是别招惹黑客,否则怎么都能攻击。
㈦ php-预防XSS攻击的一些方法整理
很多博客园有。
希望我的回答可以帮到你,有什么不懂可以追问。
㈧ php过滤指定字符的函数
explode — 使用一个字符串分割另一个字符串
array explode ( string $delimiter , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素专都是 string 的一个属子串,它们被字符串 delimiter 作为边界点分割出来。
<?php
//示例1
$pizza="";
$pieces=explode("",$pizza);
echo$pieces[0];//piece1
echo$pieces[1];//piece2
//示例2
$data="foo:*:1023:1000::/home/foo:/bin/sh";
list($user,$pass,$uid,$gid,$gecos,$home,$shell)=explode(":",$data);
echo$user;//foo
echo$pass;//*
?>
㈨ 大家都知道php有个函数htmlspecialchars 可以拿来防止X-S-S.
这个函数是过滤 ' "" 即 单引抄号 双引号的
在入库的时候如果不过滤 ' ""这样的东西 php程序员应该能明白有多可怕
htmlspecialchars的作用是把:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
输出的时候不需要特殊处理 浏览器 会把这些标签还原的
一般来说使用 mysql_escape_string() 处理sql语句就可以解决很多问题
不信可以尝试一下
㈩ PHP 过滤函数有哪些
①常用的来安全函数源:
mysql_real_escape_string()
addslashes()
②这些函数的作用:
mysql_real_escape_string()和addslashes()函数都是对数据中的
单引号、双引号进行转义!也就是防止sql注入!
但是mysql_real_escape_string()考虑了字符集,更加的安全一些!
经过查阅相关的资料,可以得出一个结论:当前的字符集是单字节的话,这两个函数作用相同,都可以起到转义过滤的作用,但是,有谁会只是用单字节呢?尤其是utf8越来越广泛的被使用到!
③函数的用法:
在了解mysql_real_escape_string()和addslashes()这两个函数的用法的时候,我们必须先了解另外两个函数的含义!
get_magic_quotes_gpc()和get_magic_quotes_runtime(),我们来比较一下两个函数的异同:
相同:
a、两者都是用来获取php.ini配置文件的配置情况的!当开启的时候返回1,关闭的时候返回0!
b、当开启的时候,都会对指定范围内的数据进行转义过滤!