3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
代码如下 | 复制代码 |
function encrypt($input){ function decrypt($encrypted){ function pkcs5_pad ($text, $blocksize) { function pkcs5_unpad($text){ function PaddingPKCS7($data) { 用法: $crypt = new Crypt3Des('密钥'); |
一个入门级别的例子
代码如下 | 复制代码 |
$k = $_REQUEST['k']; $k = addslashes($k);//转义:单引号,双引号,反斜线,NULL $k = str_replace('%', '\%', $k); $k = str_replace('_', '\_', $k); $sql = "select * from users where name like '%$k%'"; if(!empty($k)){ $res = mysql_query($sql, $con) or die(mysql_error()); if($row = mysql_fetch_assoc($res)){ foreach($row as $k=>$v){ echo $row[$k].':'.$row[$v].'<br />'; } } }else{ echo '******'; } |
补充
mysql_real_escape_string()
所以得SQL语句如果有类似这样的写法:
"select * from cdr where src =".$userId; 都要改成 $userId=mysql_real_escape_string($userId)
例子
代码如下 | 复制代码 |
<?php |
所有有打印的语句如echo,print等 在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss,注意中文要写出
代码如下 | 复制代码 |
htmlentities($name,ENT_NOQUOTES,GB2312) 。 |
例子,使用strip_tags()函数过滤所有html
代码如下 | 复制代码 |
$str = '<a href="#">href</a>'; 输出结果为 <a href="#">href</a> href |
上面函数有一个问题就是包括html标签,img标签都过滤掉了,如果我们希望保留图片怎么办
在网上找到一个函数
代码如下 | 复制代码 |
function uh($str) |
这样就可以过滤指定标签了,上面方法还不会我们可参考下面办法
代码如下 | 复制代码 |
<br>$str=preg_replace("/\s+/", " ", $str); //过滤多余回车 <br>$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格) <br><br>$str=preg_replace("/<\!--.*?-->/si","",$str); //注释 <br>$str=preg_replace("/<(\!.*?)>/si","",$str); //过滤DOCTYPE <br>$str=preg_replace("/<(\/?html.*?)>/si","",$str); //过滤html标签 <br>$str=preg_replace("/<(\/?head.*?)>/si","",$str); //过滤head标签 <br>$str=preg_replace("/<(\/?meta.*?)>/si","",$str); //过滤meta标签 <br>$str=preg_replace("/<(\/?body.*?)>/si","",$str); //过滤body标签 <br>$str=preg_replace("/<(\/?link.*?)>/si","",$str); //过滤link标签 <br>$str=preg_replace("/<(\/?form.*?)>/si","",$str); //过滤form标签 <br>$str=preg_replace("/cookie/si","COOKIE",$str); //过滤COOKIE标签 <br><br>$str=preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$str); //过滤applet标签 <br>$str=preg_replace("/<(\/?applet.*?)>/si","",$str); //过滤applet标签 <br><br>$str=preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$str); //过滤style标签 <br>$str=preg_replace("/<(\/?style.*?)>/si","",$str); //过滤style标签 <br><br>$str=preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$str); //过滤title标签 <br>$str=preg_replace("/<(\/?title.*?)>/si","",$str); //过滤title标签 <br><br>$str=preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$str); //过滤object标签 <br>$str=preg_replace("/<(\/?objec.*?)>/si","",$str); //过滤object标签 <br><br>$str=preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$str); //过滤noframes标签 <br>$str=preg_replace("/<(\/?noframes.*?)>/si","",$str); //过滤noframes标签 <br><br>$str=preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$str); //过滤frame标签 <br>$str=preg_replace("/<(\/?i?frame.*?)>/si","",$str); //过滤frame标签 <br><br>$str=preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$str); //过滤script标签 <br>$str=preg_replace("/<(\/?script.*?)>/si","",$str); //过滤script标签 <br>$str=preg_replace("/javascript/si","Javascript",$str); //过滤script标签 <br>$str=preg_replace("/vbscript/si","Vbscript",$str); //过滤script标签 <br>$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str); //过滤script标签 <br>$str=preg_replace("/&#/si","&#",$str); //过滤script标签,如javAsCript:alert( <br> |
如果只要过滤过滤html标签,js代码,css样式标签
代码如下 | 复制代码 |
|
这样即可了哦。
我了解中的php加密与解密方法有很多的,有常用的encrypt与DES加密解密算法了,下面我就给大家整理这两种算法的加密函数例子。例子,php加密解密的例子
代码如下 | 复制代码 |
加密函数
解密代码如下: /* 辅助函数: /* 使用如下所示 $str='作者:www.111cn.net'; echo '原文:',$str."<br><hr>"; |
DES加密解密函数
代码如下 | 复制代码 |
<?php 以下是测试结果: $str = '12345678'; $key = '1234abcd'; echo $str.' <=> '.$mstr; |
例子2
代码如下 | 复制代码 |
|
下载:http://www.rrpowered.com/code/RRPowered-NudityFilter.zip
我在phpclasses.org上面偶然发现一个很有用的,由Bakr Alsharif开发的可以帮助开发者基于皮肤像素点来检测图片的类文件.
它会分析在一张图片的不同部分使用的颜色,并决定其是否匹配人类皮肤颜色的色调.
作为分析的结果,他会返回一个反映图片包含xx露的可能性的分值.
此外,他还可以输出被分析的图片,上面对使用给定颜色的肤色的像素进行了标记.
当前它可以对PNG,GIF和JPEG图片进行分析.
PHP
下面展示了如何使用这个PHP类.
让我们先从包含过滤器,nf.php文件开始.
代码如下 | 复制代码 |
include('nf.php'); |
接下来,创建一个新的名叫ImageFilter的类,然后把它放到一个叫做$filter的变量中.
代码如下 | 复制代码 |
$filter = new ImageFilter; |
获取图片的分值并将其放到一个$score变量中.
代码如下 | 复制代码 |
|
如果图片分值大于或等于60%,那就展示一条(告警)消息.
代码如下 | 复制代码 |
if($score >= 60){ |
下面是所有的PHP代码:
代码如下 | 复制代码 |
<?php /*Include the Nudity Filter file*/ include ('nf.php'); /*Create a new class called $filter*/ $filter = new ImageFilter; /*Get the score of the image*/ $score = $filter -> GetScore($_FILES['img']['tmp_name']); /*If the $score variable is set*/ if (isset($score)) { /*If the image contains nudity, display image score and message. Score value if more than 60%, it is considered an adult image.*/ if ($score >= 60) { echo "Image scored " . $score . "%, It seems that you have uploaded a nude picture."; /*If the image doesn't contain nudity*/ } else if ($score < 0) { echo "Congratulations, you have uploaded an non-nude image."; } } ?> |
标记语言
我们可以使用一个基础的HTML表单上传图片.
代码如下 | 复制代码 |
<form method="post" enctype="multipart/form-data" action="<?php echo $SERVER['PHP_SELF'];?> "> |
总结
请记得,PHP不能够检测所有的图片,所以不完全可信.我希望你觉得这还有点用处.