那位大虾有最安全的 的代码
大家分享一下
顺便在讨论讨论
那位大虾有最安全的 的代码
大家分享一下
顺便在讨论讨论
一般本人所知的网站安全漏洞。
SQL注入漏洞、参数验证漏洞、数据库连接漏洞、图片上传漏洞。
SQL注入漏洞:
主要是通过在网页上输入非法SQL语句,提交到服务器来实现的。
一般此类漏洞的危害是,黑客直接获得管理员权限。非法修改数据库数据。
简单的原理就是比如我们验证用户名密码经常用如下的形式SQL语句
select * from where usname=XXX and pwd='&XXX&"'"
提交错误的用户名密码,肯定无法登陆。比如有管理员账号admin
而在SQL语句里"--"这个符号代表注释符号,后面的SQL语句就不会被执行。
而如果对于参数验证不严格,输入如下信息登陆
用户名:admin --密码:aaaa
这里密码是随便输入的,而生成SQL语句时就变成了
select * from where usname='admin' --and pwd='aaa'
这样后面的pwd就可能被注释掉而select * from where usname='admin'这句SQL语句执行后一定会返回结果,
如此方法即可不用破解密码就使用了管理员登陆了系统。
这只是SQL注入的一种办法而已,因为SQL语句众多,黑客有可能提交一些SQL语句删除或更改数据库中的数据。
参数验证漏洞
一些网站对于如xxx.asp?id=xx
中的ID参数验证不严谨,无验证或无错误处理。尤其是Access数据库的网站,这就会给黑客可乘之机。
首先如果一些SQL语句出错的话有可能会显示如下的系统错误信息的形式
[xxx]xxxx错误
出错数据库:xxx\xxx\xxx.mdb
而其中的xxx.mdb正是数据库的路径或名称。
所以在URL地址中故意输入错误的ID如-99999等等,就有可能出现这种系统错误提示。
这样黑客就得到了数据库的名称和地址,将数据库下载之后,数据库再未加密的话,数据信息就一览无余了。
这种就是著名的暴库漏洞,通过爆出错误信息,得到数据库地址。
数据库连接漏洞
一般写ASP程序很习惯写在如condb.inc这样的文件中。
这里面会有数据库的名称和地址,如果黑客找到这种inc文件。可以通过浏览器http直接下载,得到数据库地址。
因此这种漏洞的解决办法就是要么加密数据库地址,要么连接信息写在condb.asp中防止http下载。
图片上传漏洞
一般的图片路径都是如"X:xxx\xxx\xxx.jpg"
而学过C语言的应该知道\0代表字符串结束标记。
而一般的上传程序验证不严格验证文件只取字符串中最后一个.号的后所有字符串。
因此随便找一个ASP木马程序上传时输入如下上传路径
X:\xxx\xx\xxx.asp\0.jpg
这时看似上传的是jpg图片,其实真正上传的是xxx.asp程序,这样ASP木马就被上传到服务器上了。
在URL中运行ASP木马,剩下的结果就不用说了吧,服务器信息一览无余。
参考解决方案http://www.zebcn.com/html/200412/1473.html
[此贴子已经被作者于2006-12-2 9:26:11编辑过]
SQL注入漏洞的防止,一般是屏蔽并验证非法字符注入--%等等,规定用户注册只能输入英文或数字的用户名,不得带有其他字符。还有就是屏蔽用户名中的空格,因为SQL语句如admin delete * from xxx如果屏蔽掉空格,这句话在SQL里就是错误的语句。不会被执行,从而使黑客无法执行非法SQL语句。
参数验证漏洞防治方法,就是加强参数验证。对于URL传参一定要加验证,对于做好的程序,要加错误处理On Error Resume Next防止引发错误,或者自定义错误信息通过判断Err.Number的错误号,来显示自定义错误信息,不要显示系统错误信息。这样黑客无法通过错误信息获取数据库路径,比如在ID输入-999时,显示"ID错误","无此ID"或"数据库错误"等自定义错误消息。这种消息黑客就得不到数据库地址了。
图片上传漏洞,一般是对于\0等特殊标记加判断或判断.号个数,超过两个.号的为非法路径,这样杜绝黑客提交非法路径。