微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提高创build用户帐户的Python CGI脚本的安全性

以下是用于创build用户帐户的CGI脚本的代码。 该脚本将检查是否有新用户用户名,如果没有用户名,将创build一个包含新用户信息(即用户名密码)的文件。 以前,有人问过如何给由这个文件创build的CGI脚本某些特权(链接: 在Apache服务器上运行一个具有Sudo特权的Python CGI脚本 )。 对此脚本的潜在安全问题给予了反馈。 例如,有人build议,如果一个path被input到用于创build一个用户名的表单中,那么问题就可以开始了。 服务器被设置为禁止访问可能出现问题的某些目录。 是否还有其他潜在的安全风险,有哪些潜在的修复?

感谢您的任何答案!

#!/usr/bin/python import cgi,os import cgitb cgitb.enable() # Retrieve form fields form = cgi.FieldStorage() # Get POST data fname = form.getfirst("fname") # Pull fname field data passw = form.getfirst("passw") # Pull lname field data # Begin HTML generation print "Content-Type: text/html; charset=UTF-8" # Print headers print "" try: with open('Users/%s.py' %(fname)): print ''' <!DOCTYPE html> <html> <head> <link media="screen" type="text/css" rel="stylesheet" href="/style.css"></linK> <Meta charset="UTF-8"> <Meta http-equiv="refresh" content="3;URL=/cgi-bin/createAccount/createAccount.html"> <Meta name="keywords" content="chat,chat.ngrok.com"> <title>Please Wait</title> <body bgcolor="black"> <div id="navbar"> <ul> <li><a href="/">Home</a></li> <li><a href="#">About</a></li> <li><a href="/">Create Account</a></li> <li><a href="/">Login</a></li> <li><a href="/">LinkHere</a></li> </ul> </div> <div class="Container"> <div class="Header"></div> <div id="fire"> <br> <h1>Sorry,this username is already taken!</h1> </div> </body> </html> ''' except IOError: createU = open('Users/%s.py' %(fname),'w') createU.write('''#!/usr/bin/python print "Content-type: text/html; charset=UTF-8" print "" print "<!DOCTYPE html>" print "<html>" print "<head>" print "<link media='screen' type='text/css' rel='stylesheet' src='/style.css'></link>" print "</title>Test</title>" print "</head>" print "<body bgcolor='black'>" print "<div id='navbar'>" print "<ul>" print "<a href='/'>Home</a></li>" print "<a href='/'>About</a></li>" print "<a href='/'>Create Account</a></li>" print "<a href='/'>Login</a></li>" print "<a href='/'>LinkHere</a></li>" print "</ul>" print "</div>" print "<div class='Container'>" print "<div class='Header'></div>" print "</body>" print "</html>"''') createU.close() os.system('chmod +x Users/%s.py' %(fname)) print ''' <!DOCTYPE html> <html> <head> <link media="screen" type="text/css" rel="stylesheet" href="/style.css"></linK> <Meta charset="UTF-8"> <Meta name="keywords" content="chat,chat.ngrok.com"> <title>Please Wait</title> <body bgcolor="black"> <div id="navbar"> <ul> <li><a href="/">Home</a></li> <li><a href="#">About</a></li> <li><a href="/">Create Account</a></li> <li><a href="/">Login</a></li> <li><a href="/">LinkHere</a></li> </ul> </div> <div class="Container"> <div class="Header"></div> <div id="fire"> <br> <h1>Loading... Please Wait!</h1> </div> <form action="./test.py" name="FNAME" method="post"> ''' print '<input type="hidden" name="passw" value="%s" />' %(passw) print ''' </form> <SCRIPT TYPE="text/JavaScript">document.forms["FNAME"].submit();</SCRIPT> </form> </body> </html> '''

Amazon EC2实例之间进行通信的最佳实践是什么?

ASP.NET / IIS安全性(Windows身份validation)

InnoSetup – 如何让用户键入许可证密钥或产品密钥,并将其与编译的常量相匹配?

如何在htaccess重写规则中将一个秘密令牌作为查询string附加安全性?

删除用户中的文件夹开始菜单程序

权限写入LOCAL_MACHINE

在Win32中任何易于使用的散列函数来散列ASCIIstring?

文件一个用户主目录复制到Linux中的另一个用户主目录

什么文件夹保证用户在Windows上有写权限?

我怎样才能得到使用C ++的SYstem进程中的活动用户名

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐