php代码安全性问题
1.⽹站⼀般都有⼀个统⼀的⼊⼝index.php,隐藏⽹站统⼀⼊⼝,url的重写
2.svn每个⼈给予不同的权限
3.防sql注⼊解决办法:使⽤预编译语句,⼀般在sql语句中
在php中,对于mysql数据库有两个模块,mysql和mysqli,mysqli的意思就是mysql improve。mysql的改进版,这个模块中就含有“预编译”这个概念。像上⾯那个sql语句,改⼀改:select * from admin where username='?' password='?',它就不是⼀个sql语句了,但是可以通过mysqli的预编译功能先把他编译成stmt对象,在后期⽤户输⼊账号密码后,⽤stmt->bind_param将⽤户输⼊的“数据”绑定到这两个问号的位置。这样,⽤户输⼊的内容就只能是“数据”,⽽不可能变成“代码
<?php
//⽤户输⼊的数据
$name = 'admin';
$pass = '123456';
//⾸先新建mysqli对象,构造函数参数中包含了数据库相关内容。
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);
//设置sql语句默认编码
$this->mysqli->set_charset("utf8");
//创建⼀个使⽤通配符的sql语句
$sql = 'SELECT user_id FROM admin WHERE username=? AND password=?;';
//编译该语句,得到⼀个stmt对象.
$stmt = $conn->prepare($sql);
/********************之后的内容就能重复利⽤,不⽤再次编译*************************/
//⽤bind_param⽅法绑定数据
//⼤家可以看出来,因为我留了两个?,也就是要向其中绑定两个数据,所以第⼀个参数是绑定的数据的类型(s=string,i=integer),第⼆个以后的参数是要绑定的数据
$stmt->bind_param('ss', $name, $pass);
//调⽤bind_param⽅法绑定结果(如果只是检查该⽤户与密码是否存在,或只是⼀个DML语句的时候,不⽤绑定结果)
//这个结果就是我select到的字段,有⼏个就要绑定⼏个
$stmt->bind_result($user_id);
php调用mysql数据库
//执⾏该语句
$stmt->execute();
//得到结果
if($stmt->fetch()){
echo '登陆成功';
//⼀定要注意释放结果资源,否则后⾯会出错
$stmt->free_result();
return $user_id; //返回刚才select到的内容
}else{echo '登录失败';}
?>
5.上传⽂件类型的限制
6.验证码的安全验证对⽐之后,清楚session中的验证码
7.系统模块化管理
8.隐藏⽂件的扩展名

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。