golang实现文件上传权限验证(超简单)
Go语言创建web server非常简单,部署也很容易,不像IIS、Apache等那么重量级,需要各种依赖、配置。一些功能单一的web 服务,用Go语言开发特别适合。http文件上传下载服务,在很多地方都能用到,大到门户网站,小到公司内部文件共享等。
下面的代码在后台上传处理代码里,先判断“key”字段,如果key 值与设定的“密码”不符合,则不保存文件,达到文件上传权限验证的目的。
注意在go程序运行目录里,创建一个“html”文件夹。
****************************main.go********************************
package main
import(
"fmt"
"io"
"net/http"
"os"
"strings"
)
func Upload(whttp.ResponseWriter,r*http.Request){
r.ParseMultipartForm(32<<20)
key:=strings.Join(r.Form["key"],"")
if key!="89437589"{
fmt.Fprintf(w,"authfailed")
return
}
file,handler,_:=r.FormFile("file")
defer file.Close()
f,_:=os.OpenFile("html/"+handler.Filename,os.O_WRONLY|os.O_CREATE,0666)
defer f.Close()
io.Copy(f,file)
fmt.Fprintf(w,"success")
}
func main(){
http.Handle("/",http.FileServer(http.Dir("html")))
http.HandleFunc("/upload",Upload)
http.ListenAndServe("0.0.0.0:8080",nil)
}
*****************************test.htm*******************************
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Upload Test</title>
</head>
<body>
<form enctype="multipart/form-data"action="/upload" method="POST">
UploadKey:<input type="text" value="89437589"name="key" />
UploadFile: <input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
************************************************************
如果 UploadKey 的 value修改为非“89437589”,上传返回“authfailed”,表示上传验证失败。
可以根据实际情况,添加需要的验证、数据字段,比如user、subdir等。
golang实现文件上传权限验证(超简单)的更多相关文章
- Golang HTTP文件上传
2018年02月08日 10:07:13 冷月醉雪 阅读数:346 标签: golangHTTP文件上传更多 个人分类: Go 版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...
- 文件hash、上传,实现文件上传重复验证
在平台开发中,我们往往对性能要求十分严苛,每一个字段.接口都有严格的要求. 系统中文件流操作十分占用资源,这里为大家介绍对文件上传进行哈希校验---同一文件只允许上传一次到服务器,其他的上传只要指向文 ...
- ctfhub技能树—文件上传—前端验证
打开靶机 查看页面信息 尝试直接上传一句话木马 提示不允许上传 查看源码 发现仅允许上传.jpg,.png,.gif三种格式的文件 上传shell.jpg并使用burpsuite抓取数据包 添加完成后 ...
- Js 文件上传后缀验证
//img格式验证 function imgFormat(name) { //再对文件名进行截取,以取得后缀名 var namearr= name.split("."); //获取 ...
- ctfhub技能树—文件上传—无验证
打开靶机 查看页面信息 编写一句话木马 <?php echo "123"; @eval(@$_POST['a']); ?> 上传木马 上传成功,并拿到相对路径地址 查看 ...
- 文件上传漏洞演示脚本之js验证
文件上传漏洞演示脚本之js验证 0 0 716 关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码 ...
- 上传漏洞科普[1]-文件上传表单是Web安全主要威胁
为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种 常见的要求,因为它有助于提高您的业务效率.在Facebook ...
- WEB安全性测试之文件上传漏洞
1.漏洞描述:文件上传漏洞,是指可以利用WEB上传一些特定的文件包含特定代码如(<?php phpnfo;?> 可以用于读取服务器配置信息.上传成功后可以点击) 上传漏洞是指用户上传了一个 ...
- .Net文件上传--小数据--un
文件上传控件:FileUpload - 控件,界面+方法+属性Button/LinkButton/ImageButton FileUpload控件:1.SaveAs("要上传到服务器的绝对路 ...
随机推荐
- P2925 [USACO08DEC]干草出售Hay For Sale
传送门 把每体积的干草价值看成一,就变成求最大价值 直接上背包就行了 注意优化常数 #include<iostream> #include<cstdio> #include&l ...
- 斑马条码打印机通过js post 打印
<html lang="zh-ch"><head> <meta charset="utf-8"> <meta ht ...
- springBoot学习资料
转载:http://www.importnew.com/29363.html 官网搭建springBoot项目:https://www.cnblogs.com/lcplcpjava/p/7406253 ...
- eclipse 离线安装STS插件
1.下载 eclipse Version: 2018-12 (4.10.0) 下载sts相应版本:https://spring.io/tools3/sts/all 2.安装 Help->Inst ...
- 虚拟机 ----最小安装无法使用vim编辑器
解决办法:安装 yum -y install vim-enhanced.x86_64 帮助网址http://blog.csdn.net/yexudengzhidao/article/details/7 ...
- CEF和JS交互
CefClient提供所有浏览器事件处理的接口,重写CefClient类中的方法处理浏览器事件:包括Browser的生命周期,右键菜单,对话框,状态通知显示,下载事件,拖曳事件,焦点事件,键盘事件,离 ...
- ztree 获取最下级的子节点内容
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java编程--02日期格式化
第一篇,介绍日期的比较 第二篇,介绍日期的格式化 第三篇,介绍关于日期常用的计算 第四篇,比较几个常用的日期时间相关类的区别 第五篇,jdk9对日期类进行了更新,写一些i自己的学习心得. 日期的格式化 ...
- [转] javascript另类方法高效实现htmlencode()与htmldecode()函数
本文转自:http://blog.csdn.net/cuixiping/article/details/7846806 最常见的做法是采用正则表达式替换的方法,将特殊字符如 < > &am ...
- [转]FireFox与IE 下js兼容触发click事件的代码
本文转自:http://www.jb51.net/article/16549.htm FireFox与IE 下js兼容触发click事件 ,对于需要兼容这两者的朋友,就需要参考下下面的代码了<a ...