Web网站总是有捣乱分子,关于PHP的一些安全问题请教各位 最大的可能是你的PHP程序写的不合理! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if ($email==null or !isset($email))????????你不会只这样判断吧,在这儿有 有关Email输入验正的贴子,你搜搜看, 最大的可能是你的php程序的问题,贴出来看看, // ############################### 开始 注册 ###############################// 检查用户名是否存在function CheckUserid($userid) { global $DB_site,$USER_TABLE; $userid=trim($userid); $userid=str_replace("", "", $userid); $userid = eregi_replace("( ){2,}", " ", $userid); $userid=trim($userid); $SQL="SELECT userid FROM $USER_TABLE WHERE userid='$userid'"; $result=$DB_site->query($SQL); $row=$DB_site->fetch_array($result); return $row[userid];}// 检查email是否存在function CheckEmail($email) { global $DB_site,$USER_ATTR_TABLE; $$email=trim($email); $SQL="SELECT email FROM $USER_ATTR_TABLE WHERE email='$email'"; $result=$DB_site->query($SQL); $row=$DB_site->fetch_array($result); return $row[email];}// 注册新用户function AddUser() { global .... // 初始化参数 $userid=trim($userid); $userid=str_replace("", "", $userid); $userid = eregi_replace("( ){2,}", " ", $userid); $userid=trim($userid); $userid=str_replace("<[^>]*>", "", $userid); $username=str_replace("<[^>]*>", "", $username); $email = trim($email); $password = trim($password); $createtime=time(); $last_ip=$REMOTE_ADDR; $ipaddress=$last_ip; // 为用户生成随机密码 ..... // 插入到用户信息表 $SQL="INSERT INTO .... // 插入到用户数据表 $SQL="INSERT INTO .... // 设置并发送email信息 ......}if ($Ok) { // 未 选 择 来 自 地 区 if ((!isset($err)) and !isset($readme2)) $err="错误,请选择投资理念!"; // 未 选 择 来 自 地 区 if ((!isset($err)) and !isset($province)) $err="错误,请选择来自地区!"; // 请 使 用 小 写 字 母“a-z”,数 字 “0-9”,和 下 划 线 “_” if ((!isset($err)) and (!ereg("[_0-9a-z]*",$userid))) $err="错误,请使用小写字母“a-z”,数字“0-9”,和下划线 “_”作为用户名!"; // 此 用 户 名 已 存 在 if ((!isset($err)) and (CheckUserid($userid))) $err="错误,此用户名已存在!"; // E - Mail 不 正 确 if ((!isset($err)) and (!ereg("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))) $err="错误,E-Mail输入不正确!"; // 此 用 户 名 已 存 在 if ((!isset($err)) and (CheckEmail($email))) $err="错误,此eamil地址已经存在!"; if (!isset($err)) { AddUser(); header("Location: complete.php?ej=$session[sessionhash]&a=suc"); } } 就是以上程序,我竟然发现数据库里的记录有email、来自地区等等都为空的记录,所以问题比较严重! 如果$err有值,后面的$err就不被赋值,你是意思是这样的吗?所有的换成“||”试一下, 是的,如果$err被赋值,就不可以插入数据库数据,你的建议我试一下。我想确认一下我的第二个问题php4.20和php4.21有重大安全bug,当register_globals = On时,可能通过传全局变量入侵,我的php版本是php4.11,我不知道这个版本有没有问题,我也想把register_globals 设置改为 off,但是这样程序改动很大,所以4.11版本如果没有问题我就不改了 没这么严重吧!bug?这个你可参考:http://www.csdn.net/expert/topic/920/920973.xml?temp=.5764429 php4.20的register_globals默认值才改为OFF的,也就是说PHP4.11下默认还是ON的。你可以看看http://www.php.net/ChangeLog-4.php具体修正过哪些,我想php4.11应该也没什么问题吧,主要是一个上传文件会溢出的问题。把register_globals改成OFF,其实改程序也不是很麻烦,如果要兼容低版本的PHP程序,那么那些文件加入如下几句就可以了if ( function_exists('ini_get') ) { $onoff = ini_get('register_globals');} else { $onoff = get_cfg_var('register_globals');}if ($onoff != 1) { @extract($HTTP_SERVER_VARS, EXTR_SKIP); @extract($HTTP_COOKIE_VARS, EXTR_SKIP); @extract($HTTP_POST_FILES, EXTR_SKIP); @extract($HTTP_POST_VARS, EXTR_SKIP); @extract($HTTP_GET_VARS, EXTR_SKIP); @extract($HTTP_ENV_VARS, EXTR_SKIP);} 狂谢phpteam(George) 兄的这段代码,省了我不少功夫! 如何快速的学习PHP php ADODB连接oracle出现 Use of undefined constant OCI_COMMIT_ON_SUCCESS 超级菜鸟的MM,现在遇到难题了,希望各位大侠帮忙! 关于class的疑问 像論談,數據放到HTML文件裡面好還是數據庫裡面好? 数据库字段格式的问题 请PHP在IE和firefox浏览器下的问题 求教:PHP运行方式..在线等待!谢谢! mssql,limit n,m win2003下安装phpmyadmin的问题 我该怎么解决,天啊,id值死活出不来,哭! php 与 jsp ,asp大比拼,优点,缺点比较,大虾请进!!!!!!
你不会只这样判断吧,
在这儿有 有关Email输入验正的贴子,你搜搜看,
function CheckUserid($userid) {
global $DB_site,$USER_TABLE; $userid=trim($userid);
$userid=str_replace("", "", $userid);
$userid = eregi_replace("( ){2,}", " ", $userid);
$userid=trim($userid);
$SQL="SELECT userid FROM $USER_TABLE WHERE userid='$userid'";
$result=$DB_site->query($SQL);
$row=$DB_site->fetch_array($result);
return $row[userid];
}// 检查email是否存在
function CheckEmail($email) {
global $DB_site,$USER_ATTR_TABLE; $$email=trim($email);
$SQL="SELECT email FROM $USER_ATTR_TABLE WHERE email='$email'"; $result=$DB_site->query($SQL);
$row=$DB_site->fetch_array($result);
return $row[email];
}// 注册新用户
function AddUser() {
global ....
// 初始化参数
$userid=trim($userid);
$userid=str_replace("", "", $userid);
$userid = eregi_replace("( ){2,}", " ", $userid);
$userid=trim($userid); $userid=str_replace("<[^>]*>", "", $userid);
$username=str_replace("<[^>]*>", "", $username);
$email = trim($email);
$password = trim($password);
$createtime=time();
$last_ip=$REMOTE_ADDR;
$ipaddress=$last_ip;
// 为用户生成随机密码
.....
// 插入到用户信息表
$SQL="INSERT INTO .... // 插入到用户数据表
$SQL="INSERT INTO .... // 设置并发送email信息
......
}
if ($Ok) { // 未 选 择 来 自 地 区
if ((!isset($err)) and !isset($readme2)) $err="错误,请选择投资理念!"; // 未 选 择 来 自 地 区
if ((!isset($err)) and !isset($province)) $err="错误,请选择来自地区!"; // 请 使 用 小 写 字 母“a-z”,数 字 “0-9”,和 下 划 线 “_”
if ((!isset($err)) and (!ereg("[_0-9a-z]*",$userid))) $err="错误,请使用小写字母“a-z”,数字“0-9”,和下划线 “_”作为用户名!"; // 此 用 户 名 已 存 在
if ((!isset($err)) and (CheckUserid($userid))) $err="错误,此用户名已存在!"; // E - Mail 不 正 确
if ((!isset($err)) and (!ereg("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))) $err="错误,E-Mail输入不正确!"; // 此 用 户 名 已 存 在
if ((!isset($err)) and (CheckEmail($email))) $err="错误,此eamil地址已经存在!"; if (!isset($err)) {
AddUser();
header("Location: complete.php?ej=$session[sessionhash]&a=suc");
}
}
所有的换成“||”试一下,
我想确认一下我的第二个问题php4.20和php4.21有重大安全bug,当register_globals = On时,可能通过传全局变量入侵,我的php版本是php4.11,我不知道这个版本有没有问题,我也想把register_globals 设置改为 off,但是这样程序改动很大,所以4.11版本如果没有问题我就不改了
bug?这个你可参考:
http://www.csdn.net/expert/topic/920/920973.xml?temp=.5764429
把register_globals改成OFF,其实改程序也不是很麻烦,如果要兼容低版本的PHP程序,那么那些文件加入如下几句就可以了
if ( function_exists('ini_get') ) {
$onoff = ini_get('register_globals');
} else {
$onoff = get_cfg_var('register_globals');
}
if ($onoff != 1) {
@extract($HTTP_SERVER_VARS, EXTR_SKIP);
@extract($HTTP_COOKIE_VARS, EXTR_SKIP);
@extract($HTTP_POST_FILES, EXTR_SKIP);
@extract($HTTP_POST_VARS, EXTR_SKIP);
@extract($HTTP_GET_VARS, EXTR_SKIP);
@extract($HTTP_ENV_VARS, EXTR_SKIP);
}