- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
什么样的PP代码能有效避开恶意程序
什么样的PHP代码能有效避开恶意程序
阻止用户恶意破坏你的程式最有效却经常被忽略的方法是在写代码时就考虑它的可能性。留意代码中可能的安全问题是很重要的。考虑下边的旨在简化用PHP中写入大量文本文件的过程的实例函数:
?PHPfunction write_text($filename, $text=) {static $open_files = array();// 如果文件名空,关闭全部文件if ($filename == NULL) {foreach($open_files as $fr) {fclose($fr);}return true;}$index = md5($filename);if(!isset($open_files[$index])) {$open_files[$index] = fopen($filename, a+);if(!$open_files[$index]) return false;}fputs($open_files[$index], $text);return true;}? 这个函数带有两个缺省参数,文件名和要写入文件的文本。 函数将先检查文件是否已被打开;如果是,将使用原来的文件句柄。否则,将自行创建。在这两种情况中,文本都会被写入文件。 如果传递给函数的文件名是NULL,那么所有打开的文件将被关闭。下边提供了一个使用上的实例。 如果开发者以下边的格式来写入多个文本文件,那么这个函数将清楚和易读的多。 让我们假定这个函数存在于一个单独的文件中,这个文件包含了调用这个函数的代码。下边是一个这样的程式,我们叫它quotes.PHP:HTMLbodyform action=?=$_SERVER[PHP_SELF]? method=getChoose the nature of the quote:select name=quote size=3option value=funnyHumorous quotes/optionoption value=politicalPolitical quotes/optionoption value=loveRomantic Quotes/option/selectbr /The quote: input type=text name=quote_text size=30 /input type=submit value=Save Quote //form/body/HTML?PHPinclude_once(write_text.PHP);$filename = /home/web/quotes/{$_GET[quote]};$quote_msg = $_GET[quote_text];if (write_text($filename, $quote_msg)) {echo centerhrh2Quote saved!/h2/center;} else {echo centerhrh2Error writing quote/h2/center;}write_text(NULL);? 如同你看到的,这位开发者使用了write_text()函数来创建一个体系使得用户可以提交他们喜欢的格言,这些格言将被存放在一个文本文件中。 不幸的是,开发者可能没有想到,这个程式也允许了恶意用户危害web server的安全也许现在你正挠着头想着究竟这个看起来很无辜的程式怎样引入了安全风险。如果你看不出来,考虑下边这个URL,记住这个程式叫做quotes.PHP:/fun/quotes.PHP?quote=different_file.datquote_text=garbage+data 当这个URL传递给web server 时将会发生什么? 显然,quotes.PHP将被执行,但是,不是将一句格言写入到我们希望的三个文件中之一,相反的,一个叫做different_file.dat的新文件将被建立,其中包含一个字符串garbage data。 显然,这不是我们希望的行为,恶意用户可能通过把quote指定为../../../etc/passwd来访问UNIX密码文件从而创建一个帐号(尽管这需要web server以superuser运行程式,如果是这样的,你应该停止阅读,马上去修复它)。 如果/home/web/quotes/可以通过浏览器访问,可能这个程式最严重的安全问题是它允许任何用户写入和运行任意PHP程式。这将带来无穷的麻烦。 这里有一些解决方案。如果你只需
文档评论(0)