网站地图    收藏   

主页 > 后端 > 网站安全 >

站长修改代码时容易忽略的三点安全问题 - 网站

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 作为一个网站站长,尤其是新站站长,有时候为了修改网站的功能、添加网站的特色,就不得不自己写一些代码。在这个过程中,若出现一点错误,可能就会给网站带灾难性安全危机。...

作为一个网站站长,尤其是新站站长,有时候为了修改网站的功能、添加网站的特色,就不得不自己写一些代码。在这个过程中,若出现一点错误,可能就会给网站带灾难性安全危机。即使网站原本是由专业开发团队开发上线的,有较好的安全性,但是在木桶原理的作用下,你添加的那几行错误代码,完全可以导致整个网站的安全机制土崩瓦解。
 
现在将EeSafe网站安全联盟列出几点使用php架构的网站常出现的代码级安全问题,希望对站长的修改代码工作有一定的帮助。
 
 
1.现在最常见的php代码编写上的安全问题
 
Php全局变量危害代码:
 
<?php
 
If($password == “admin”)
 
$isadmin=1;
 
……..
 
If (isadmin==1)
 
echo “管理员登陆成功”;
 
?>
很明显,这是判断登陆的是否是管理员,很多网站也用这个逻辑判断其他重要的条件。
 
看上去这段代码很正确,但其实有个致命的错误,它假定$isadmin在没赋值的时候是空值,但由于php语言为了使php代码访问用户的输入尽可能容易,php把输入数据作为全局变量来处理。所以攻击者可以创建任意全局变量并赋值。
 
如何避免这样最容易被会略的问题,如果你网站使用的是PHP程序开发,如果你已经这样做了,并且web应用程序变量很多的话,最节省效率的办法就是修改php的track_vars选项。
 
 
2.网站双条件认证安全问题
 
判断用户名和密码,先判断是否为空,然后从数据数据库找同时符合条件的数据。
 
如果采用这样的逻辑将直接导致sql注入。
 
如果你要增加或修改这样的功能,程序逻辑应该是:首先,找到数据库中用户名符合的数据(当然用户名在数据库中必须是唯一的),然后查看这条数据中对应的密码是否和要验证的密码相同,这样就避免双认证问题。
 
 
3.用用户名去判断用户权限
 
很多网站都有这样的问题,比如
 
If(!username) www.2cto.com
 
{
 
return false;
 
}
 
If($username==’admin’)
 
{
 
                echo “欢迎管理员登陆”;
 
                return true;
 
}
 
看上去这个也没有逻辑问题,但为什么还是存在安全漏洞?是因为很多数据库对特殊字符都不处理,比如mysql这样的数据库,如果输入的字符在ASCII码129~255范围内,是不做处理的,也就是如果注册用户使用“admin+特殊字符”时,他也同样能够成功注册一个名为admin的用户,安全机制消失了。
 
 
欢迎交流探讨。
 
 
作者  EeSafe网站安全联盟

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论