当前位置:  编程技术>php
本页文章导读:
    ▪php可逆加密函数代码一例      php编程中,难免会遇到对数据进行加密与解密的情况,最常用的莫过于加密与加密cookie数据了。 php加密与解密代码:   代码示例: <?php // 加密数据并写到cookie里 $cookie_data = $this -> encry.........
    ▪php编程的安全防范知识      php编译过程中的安全知识。 1,建议安装Suhosin补丁,必装安全补丁。 php.ini安全设置   代码示例: register_global = off magic_quotes_gpc = off display_error = off log_error = on # allow_url_fopen = off expose_php =.........
    ▪有关php调用时间格式的参数详解      php调用时间格式的参数详解。 1、调用语法 使用函式date() 实现获取当前的时间格式,例如:   代码示例: $d = date("Y-m-d H:i:s") 2、时间格式参数设定 上面语法中”Y-m-d H:i:s”,显示的格式为: .........

[1]php可逆加密函数代码一例
    来源: 互联网  发布时间: 2013-12-24

php编程中,难免会遇到对数据进行加密与解密的情况,最常用的莫过于加密与加密cookie数据了。

php加密与解密代码:
 

代码示例:

<?php
// 加密数据并写到cookie里
$cookie_data = $this -> encrypt("nowamagic", $data);

$cookie = array(
'name' => '$data',
'value' => $cookie_data,
'expire' => $user_expire,
'domain' => '',
'path' => '/',
'prefix' => ''
);
$this->input->set_cookie($cookie);

// 加密
public function encrypt($key, $plain_text) {
$plain_text = trim($plain_text);
$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
$c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);
return trim(chop(base64_encode($c_t)));
} //edit www. 2013/6/7

//解密
if( isset()($_COOKIE['data']) )
{
//用cookie给session赋值
$_SESSION['data'] = decrypt("nowamagic", $_COOKIE['data']);
}

//解决函数
function decrypt($key, $c_t) {
$c_t = trim(chop(base64_decode($c_t)));
$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
$p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);
return trim(chop($p_t));
}
?>


    
[2]php编程的安全防范知识
    来源: 互联网  发布时间: 2013-12-24

php编译过程中的安全知识。

1,建议安装Suhosin补丁,必装安全补丁。
php.ini安全设置
 

代码示例:
register_global = off
magic_quotes_gpc = off
display_error = off
log_error = on
# allow_url_fopen = off
expose_php = off
open_basedir =
safe_mode = on
disable_function = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,get_cfg_var
safe_mode_include_dir =

2,DB SQL预处理
mysql_real_escape_string (很多PHPer仍在依靠addslashes()防止SQL注入,但是这种方式对中文编码仍然是有问题的。addslashes的问题在于黑客可以用 0xbf27来代替单引号,GBK编码中0xbf27不是一个合法字符,因此addslashes只是将0xbf5c27,成为一个有效的多字节字符,0xbf5c仍会被看作是单引号)。
用mysql_real_escape_string函数也需要指定正确的字符集,否则还可能存在问题的。

prepare + execute(PDO)
ZendFramework可以用DB类的quote或者quoteInto, 这两个方法是根据各种数据库实施不用方法的,不会像mysql_real_escape_string只能用于mysql。

3,用户输入的处理
无需保留HTML标签的可以用以下方法
strip_tags(), 删除string中所有html标签
htmlspecialchars(),只对”<”,”>”,”;”,”'”字符进行转义
htmlentities,对所有html进行转义
必须保留HTML标签情况下可以考虑以下工具:
 

代码示例:
HTML Purifier: HTML Purifier is a standards-compliant HTML filter library written in PHP.
PHP HTML Sanitizer: Remove unsafe tags and attributes from HTML code
htmLawed: PHP code to purify & filter HTML

4,上传文件
用is_uploaded_file和move_uploaded_file函数,使用HTTP_POST_FILES[]数组。并通过去掉上传目录的PHP解释功能来防止用户上传php脚本。
ZF框架下可以考虑使用File_upload模块
Session,Cookie和Form的安全处理
不要依赖Cookie进行核心验证,重要信息需要加密, Form Post之前对传输数据进行哈希。
例如发出去的form元素如下:
 

代码示例:
<input type="hidden" name="H[name]" value="<?php echo $Oname?>"/> <input type="hidden" name="H[age]" value="<?php echo $Oage?>"/> <?php $sign = md5('name'.$Oname.'age'.$Oage.$secret); ?> <input type="hidden" name="hash" value="<?php echo $sign?>"" />
POST回来之后对参数进行验证
$str = "";
foreach($_POST['H'] as $key=>$value) {
$str .= $key.$value;
}
if($_POST['hash'] != md5($str.$secret)) {
echo "Hidden form data modified"; exit;
}

5,PHP安全检测工具(XSS和SQL Insertion)
Wapiti - Web application security auditor(Wapiti - 小巧的站点漏洞检测工具) (SQL injection/XSS攻击检查工具)

6,安裝/使用方法:
 

代码示例:
apt-get install libtidy-0.99-0 python-ctypes python-utidylib
python wapiti.py http://Your Website URL/ -m GET_XSS
 

Pixy: XSS and SQLI Scanner for PHP( Pixy - PHP 源码缺陷分析工具)
安裝: apt-get install default-jdk

就介绍这些吧,如果上面介绍的这些安全措施,你都能完全做到的话,你的php代码已经是非常安全了。


    
[3]有关php调用时间格式的参数详解
    来源: 互联网  发布时间: 2013-12-24

php调用时间格式的参数详解。

1、调用语法
使用函式date() 实现获取当前的时间格式,例如:
 

代码示例:
$d = date("Y-m-d H:i:s")

2、时间格式参数设定
上面语法中”Y-m-d H:i:s”,显示的格式为: 年-月-日 小时:分钟:秒
只要获取对应的相关时间参数就可以替换出自己想要的时间格式了!

附,php时间格式的参数说明。
 

a – “am” 或是 “pm”
A – “AM” 或是 “PM”
d – 几日,二位数字,若不足二位则前面补零; 如: “01″ 至 “31″
D – 星期几,三个英文字母; 如: “Fri”
F – 月份,英文全名; 如: “January”
h – 12 小时制的小时; 如: “01″ 至 “12″
H – 24 小时制的小时; 如: “00″ 至 “23″
g – 12 小时制的小时,不足二位不补零; 如: “1″ 至 12″
G – 24 小时制的小时,不足二位不补零; 如: “0″ 至 “23″
i – 分钟; 如: “00″ 至 “59″
j – 几日,二位数字,若不足二位不补零; 如: “1″ 至 “31″
l – 星期几,英文全名; 如: “Friday”
m – 月份,二位数字,若不足二位则在前面补零; 如: “01″ 至 “12″
n – 月份,二位数字,若不足二位则不补零; 如: “1″ 至 “12″
M – 月份,三个英文字母; 如: “Jan”
s – 秒; 如: “00″ 至 “59″
S – 字尾加英文序数,二个英文字母; 如: “th”,”nd”
t – 指定月份的天数; 如: “28″ 至 “31″
U – 总秒数
w – 数字型的星期几,如: “0″ (星期日) 至 “6″ (星期六)
Y – 年,四位数字; 如: “1999″
y – 年,二位数字; 如: “99″
z – 一年中的第几天; 如: “0″ 至 “365″

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3