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("要上传到服务器的绝对路 ...
随机推荐
- ansible部署,规划
部署管理服务器 第一步:先检查有没有ssh服务 [root@iZm5eeyc1al5vzh8bo57zyZ ~]# rpm -qf /etc/init.d/sshd openssh-server-5. ...
- python模块之openpyxl扩展
主要是对openpyxl扩展进行扩展,使用归类等 1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win- ...
- java动态数组笔记
动态数组: 在java.lang.reflect包下提供了Array类,包括一系列static方法,通过这些方法可动态的创建数组.给元素赋值.取出元素值等等 //理解数组引用——下面定义的objs数组 ...
- my.资质
换算到每1点魔力初始,1点魔力等同于22点法资,等于0.00235点成长. 气血=等级*体力资质*0.002895+体力属性点*成长*7 魔法=等级*法力资质*0.002085+法力属性点*成长*5 ...
- free -m命令输出详解
free -m输出有3行: Mem:表示物理内存 -/+ buffers/cached:表示物理内存缓存 Swap:表示硬盘交换分区 其中Mem中的total.used.free.shared.buf ...
- MQTT学习之一
一MQTT特性: 基于C/S,发布订阅(发布者服务器->云平台代理->订阅客户端)一对多结构,适用于低带宽高延时,基于TCP/IP之上.
- python的基础数据类型
Python基础数据类型 定义: int => 数字类型 str => 字符串数据类型 bool =>布尔值,True False list 列表,用来存放大量数据 [ ...
- ubuntu15.04 xampp 安装memcache
要ThinkPHP3.2里由于要用到 memcache 缓存, 如果没有配置memcache,会报错,说系统支持 memcache. 所在配置的时候有点问题,现在解决了,现把它记录下来,以便以后查阅之 ...
- ubuntu下安装录屏软件
sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder sudo apt-get update sudo apt-get inst ...
- 动态行转列 pivot实现
declare @sql varchar(8000) begin set @sql='' --初始化变量@sql select @sql= ...