当前位置: 首页 > news >正文

枣庄市建设项目环评备案网站php做调查问卷网站

枣庄市建设项目环评备案网站,php做调查问卷网站,哪家网站做的好,高端 建站前言 因为CMDB内部的需求#xff0c;需要一个API进行数据传输#xff0c;用来传递需要抓取的服务端信息信息给抓取的autoclient#xff0c;autoclient抓取好之后再通过API传输到服务器#xff0c;保存到数据库。但是为了防止恶意的API访问#xff0c;需要做一个验证。 设想…前言 因为CMDB内部的需求需要一个API进行数据传输用来传递需要抓取的服务端信息信息给抓取的autoclientautoclient抓取好之后再通过API传输到服务器保存到数据库。但是为了防止恶意的API访问需要做一个验证。   设想一 可以在客户端跟服务端都规定好一串随机字符串做验证只有当带着这串验证的请求发送过来的时候才让其进行访问。 如果学过了爬虫大家很容易就发现这串随机字符串在浏览器里面是可以监听的多观察几次总是会发现的。而且无论通过如何的方式只要暴露在外面都是会被察觉的。此时就需要对其进行加密。   设想二 既然随机字符串在web传输中是明文状态那我们试着将其转换成密文的转换下思路如果每次的请求都是随机字符串配合一串一直变动的值进行md5加密此时产生的验证字符串也应该变成动态密文。用什么做动态字符串来配合约定好的字符串进行md5加密呢既然是动态的时间戳是最好的选择。    此时一切看着都很完美但是忽略了一点无论是不是加密的字符串http请求的时候都是可以监听到的所以即使加密即使不知道怎么加密的依旧可以直接拿着这串字符串直接进行验证访问。尴尬。。。   设想三 其实上面的设想二已经做到了动态思路上只要改一点就立刻变成可行的了。在http请求的时候即使是在相当糟糕的网络环境里也不会需要发送非常长的时间因此卡住时间便可以实现。 在拿到client的时间戳是服务器段只需要跟当前时间戳进行比对如果时间间隔小于10秒就当作正常访问。就可以了。 上面的设计思路完美的解决了动态的问题此时不免还有疑问如果真的会在10s内盗取到字符串直接访问呢   完善思路 基于上面的问题可以再多加异步验证写一个列表访问过的字符串都放在列表里后面的访问都跟此列表比对下如果在此列表内就拒绝访问。 如上的设计思路就可以解决问题。 优化 最后的设计思路肯定能解决问题但是也存在一个问题就是随着时间进度的推移访问列表一定会越来越大始终是不友好的一点。肯定需要给字符串设计一个超时时间。 visited_list [28g12b12128912e2kj|127381237812391, 829312g12be120e102ej12je91|12312984123123,....] 如果以上述的方式取跟系统时间比较当然是一件很费事的工作占用很多的IO可以使用redis来轻松实现这个功能。        CBV通过此类装饰方式实现验证  验证代码 def api_auth_method(request):auth_key request.META.get(HTTP_AUTH_KEY)if not auth_key:return Falsesp auth_key.split(|)if len(sp) ! 2:return Falseencrypt, timestamp sptimestamp float(timestamp)limit_timestamp time.time() - ASSET_AUTH_TIMEprint(limit_timestamp, timestamp)if limit_timestamp timestamp:return Falseha hashlib.md5(ASSET_AUTH_KEY.encode(utf-8))ha.update(bytes(%s|%f % (ASSET_AUTH_KEY, timestamp), encodingutf-8))result ha.hexdigest()print(result, encrypt)if encrypt ! result:return Falseexist Falsedel_keys []for k, v in enumerate(ENCRYPT_LIST):print(k, v)m v[time]n v[encrypt]if m limit_timestamp:del_keys.append(k)continueif n encrypt:exist Truefor k in del_keys:del ENCRYPT_LIST[k]if exist:return FalseENCRYPT_LIST.append({encrypt: encrypt, time: timestamp})return Truedef api_auth(func):def inner(request, *args, **kwargs):if not api_auth_method(request):return JsonResponse({code: 1001, message: API授权失败}, json_dumps_params{ensure_ascii: False})return func(request, *args, **kwargs)return inner auth  转载于:https://www.cnblogs.com/wuzdandz/p/9429784.html
http://wiki.neutronadmin.com/news/121802/

相关文章:

  • 做外贸找客户的网站关于网站建设费用
  • 做网站都需要哪些知识整站优化该怎么做
  • 网站设计图尺寸网站建设教程资源
  • 珠海网站建设哪个好薇音速企业名录搜索软件
  • 菜鸟学做网站的步骤工信部会抽查网站么
  • wordpress音乐站主题自建销售网站
  • 业余从事网站开发国家企业信息信用信息公示网
  • 河北省网络科技网站淘宝运营培训总结
  • 学做ppt的网站有哪些不干胶网站做最好的
  • 湖南中虹羽建设工程有限公司网站徐州模板网站托管平台
  • 园区网站建设服务公司店面设计说明
  • 建立公司网站wordpress简介企业
  • 哪方面的网站去外包公司好
  • 网站建设:上海珍岛北京网站seo排名优化
  • 企业官方网站格式郑州妇科医院排行榜
  • 做企业网站的头部什么配色国外优惠卷网站怎么做
  • 郑州做网站要多少钱网站怎么做移动的图片
  • 盐山建网站网站建设哪家好采用苏州久远网络
  • 淘金企业网站建设服务天津模板网页制作如何做
  • 河北廊坊建设银行网站网上申请平台怎么申请
  • 环球资源网站重庆响应式网站建设找哪家
  • 请将已备案网站接入访问广告推广软文案例
  • 东营网站推广排名免费推广引流平台
  • 做网站需要知道的简单代码一键优化是什么意思
  • 白城网站seo网站建设宽带
  • 网站制作公司深圳网站建设去哪里找客户
  • 家装公司网站开发方案网站备案号 放网站
  • cms在线绵阳做网站优化
  • 门户网站开发 系统介绍桐乡做网站
  • pc网站和移动网站深圳服务平台网站