内容简介:最近某某酒店火了一把,动不动就开始脱裤子,很吓人啊,从自己打造安全的角度出发,我觉得最大问题是程序员参差不齐,还有就是老板压得太狠,功能都实现不完,哪有时间加固网站安全啊!由于网站功能太多,实现太复杂,难免会有sql注入,那么怎么防范?我想到的方法是用户信息和网站数据信息分开处理,也就是放到不同机器的不同数据库中,先看看下面的图,我再根据图来讲解。
前言
上一期给大家讲述了如何打造刀郎安全 PHP 系统【传送门】,本期我们继续。
最近某某酒店火了一把,动不动就开始脱裤子,很吓人啊,从自己打造安全的角度出发,我觉得最大问题是 程序员 参差不齐,还有就是老板压得太狠,功能都实现不完,哪有时间加固网站安全啊!由于网站功能太多,实现太复杂,难免会有 sql 注入,那么怎么防范?
实现原理
我想到的方法是用户信息和网站数据信息分开处理,也就是放到不同机器的不同数据库中,先看看下面的图,我再根据图来讲解。
防范分为二部分
第一部分:用户网站,也就是程序员开发功能和实现的代码部分,也是最容易出现sql注入的部分;
第二部分:授权系统,这里就是我们需要重点保护的地方,由于功能单一,实现部分也简单,做安全比较容易。
建议这二部分分二台机器部署,当有用户注册和登陆的时候,用户网站会跳转到授权系统,进行验证,验证完成后,再跳转到用户网站,这样的好处就是当用户网站出现sql注入或者上传漏洞的时候不会威胁到用户数据库的安全。
实现代码
1.打造授权系统
写了一个简单的例子,一共5个文件(login.html,login.php,reg.html,reg.php,valid_login.php),
login.html,login.php
是登陆部分,login.html是前端表单的实现,login.php是后端接收数据的处理;
reg.html,reg.php
是注册部分,reg.html是前端表单的实现,reg.php是后端接收数据的处理;
valid_login.php
验证用户网站发送过来的授权码是否有效。
1.1 reg.php的实现
接收到用户名的密码后,先比较一下密码是否一致,如果一致,直接用base64进行加密,
加密完成以后,查询一下用户名是否已经存在,不存在插入加密的base64用户名和密码信息,再跳转到授权系统的登陆页面。
1.2 login.php的实现
接收登陆的账号和密码去掉空格用base64加密一次,再到数据库取查询。
如果账号和密码匹配,我们就生成授权码(base64加密一下)并且当前的时间,他们更新到数据库中,同时跳转到用户网站127.0.0.1中去(这里的授权码和用户名是没有加密的)。
1.3 valid_login.php的实现
用接收到用户网站发送过来的用户名和授权码的时候,我们给授权码和用户名用base64加密一下,再到数据库中查询一下,当然这里还有时间字段没有实现,大家自己写代码,如果匹配正常就返回用户的信息,比如用户是否有效,用户名,用户等级。
2.用户网站授权部分实现
接收到授权系统发送过来的授权码和原始用户名后,开始验证授权码和用户名是否有效。
2.1 is_login.php的实现
把用户名和授权码发送到授权系统127.0.0.1(这里我是一台开发机器所以授权系统和用户网站的地址一致)valid_login.php页面中去验证一下,授权系统的valid_login.php会返回一个json,我们判断jison返回valid的值, 就知道用户的合法性 valid=1表示用户有效,valid=0 表示用户无效,sid是用户的等级,管理员还是普通用户。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。