开发者社区> zting科技> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

请不要相信

简介:
+关注继续查看
虽不算什么高深的东西,但至少也算一点点小经验,分享分享吧,如果您是高手,而且您还有点时间,那么请你耐心看完整篇文章,然后再帮忙指点指点,留下您的经验,我也好学习学习。链接中的例子是一些脚本攻击相关的内容,有时间的朋友可以点开看看。
  
  1.不要相信Request.QueryString:
  
  相信在asp时代,这个问题比较严重,不信,随便到网络上找几个asp的企业站,找到这种url"view.asp?id=xxx",改成"view.asp?id=xxx or 1=1",相信你会看到不一样的东西,到了.net,应该很少了,不过上次看到有人说CSDN爆过哦,简单的解决方法是在取得数据时做数据类型验证或转换。比如:
  int ViewID = 0;
  if(int.TryParse(Request.QueryString["ID"], out ViewID)){
   //...
  }
  
  2.不要相信maxlength:
  
  有时候我们想客户端输入的某个值不超过一定的长度,这个时候可能就会用到input的maxlength,但maxlength能100%保证这个值的长度不超过maxlength吗?请点击链接看看例子。
  
  显然,maxlength是不可信的,简单的解决办法是后台代码验证数据长度:
  string UserName = Request.QueryString["UserName"];
  if(!string.IsNullOrEmpty(UserName)&&UserName.length > x){
   //...提示错误或截断数据
  }
  
  3.不要相信Hidden:
  
  有时候我们想把些信息保存到前台页面,然后再发送回来,但是我们又不想让客户看到这个信息,于是,我们把数据放到了hidden里面,那客户提交数据时,hidden里的内容真的是我们放的内容吗?请点击链接看看例子。
  
  这个我一时也没想到好的验证方法,暂时也没有特殊的需求说必须验证。
  
  4.不要相信客户端验证:
  
  比如2和3中的问题,可能有的朋友觉得,我客户端再加个验证不就OK了吗?可是,往往,客户端验证也是不安全的,首先,如果客户端禁用脚本,那客户端验证是完全失效的,另外,在脚本有效的情况下,脚本验证也是可以被篡改的。请点击链接看看例子。
  
  以前QQ空间里可以通过这个方法免费使用黄钻模板,不知道现在还有没有。这个就没有什么好的解决办法,只能后台再验证一次。
  
  5.不要相信编辑器:
  
  有的时候,可能项目中要用到一些简单的编辑器,于是,我们就找到了一些编辑器,把不需要的功能(比如:编辑源码、插入图片等)剔除掉,就成了个简单的编辑器,那这样的编辑器还会有什么问题吗?请点击链接看看例子。
  
  暂时也没有什么好的解决办法,以前找到过过滤script标签的代码,但似乎不太完美。
  
  6.不要相信Cookie:
  
  网站中不可避免的会使用到Cookie,但如果一不注意,小心你的Cookie成了别人的"Cookie",请点击链接看看例子。
  取Cookie和写Cookie的js方法是在网上找到的,具体链接也找不到了。解决办法,似乎是Cookie加密(当然,即使是加密了,也尽量不要把敏感数据放到Cookie中),不知道各位高手还有没有其它好办法。
  
  7.不要相信Request.UrlReferrer:
  
  如果有朋友用这个来验证请求,那么请注意了,这个东西也是不可信的。见代码;
  System.Net.HttpWebRequest request = System.Net.WebRequest.Create("http://www.cnblogs.com/") as System.Net.HttpWebRequest;
  request.Referer = "http://www.cnblogs.com/";
  ...
  
  那么,这个时候你取得的Urlreferrer会是http://www.cnblogs.com/,但这个请求却是伪造的。
  
  
  8.不要相信用户:
  
  用户就是你潜在的威胁,客户端的东西,永远都不要轻信。
  
  另,select标签的内容也是不可信的,大家可以动手试试,随便建个页面,里面放个select,然后:
  
  javascript:alert(window.c=function(){var s=document.getElementsByTagName("select")[0];for(var x = 0; x < 100; x++){s.options[x]=new Option("选项" + x, x)}}());
  
  欢迎高手不吝赐教。示例代码下载。

  http://files.cnblogs.com/robot/sample20090415.zip



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/25/1916928.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
css和JavaScript实现的星云动画效果
css和JavaScript实现的星云动画效果
0 0
5个人如何1年交付了120+项目?分享我在阿里云做交付的工作手记
谨以此文,分享一些我加入阿里云后,我和我所在团队的成长经历。这里既有我个人如何从程序员成长为一个技术经理,也有我的团队如何把事情越做越大的过程和思考,希望能够帮到有需要的人。
0 0
一文梳理Code Review方法论与实践总结
作为卓越工程文化的一部分,Code Review其实一直在进行中,只是各团队根据自身情况张驰有度,松紧可能也不一,这里简单梳理一下CR的方法和团队实践。
0 0
我理解的测试开发与实践总结——新人篇
写这篇文章的目的是为了能够更好的帮助刚入职的新人了解这个岗位和自己的工作,也想谈谈自己工作一年来对这个领域的了解程度,做一个小小总结吧~
0 0
轻松使用阿里达摩院开源在魔搭社区上的CLUE语义匹配模型
本文将介绍达摩院NLP团队在魔搭社区(ModelScope)上开源的语义匹配模型及其使用方法。
0 0
React开发的设计模式及原则
设计模式是最常见的,通用问题的可复用解决方案的归纳总结,通常被认为是解决该类问题的最佳实践,使用设计模式能帮助我们写出更容易维护,更健壮的代码。设计模式有很多,通常它们都会遵循一些共同的设计原则,接下来我们一起回顾下React社区里出现过的一些设计模式,以及它们所遵循的设计原则。
0 0
整理一下VR&AR的现状以及未来
想要和大家聊一下VR和AR在场景中的实现,和我自己的一点看法。
0 0
设计稳定的微服务系统时不得不考虑的场景
我们的生产环境经常会出现一些不稳定的情况,如: 1、大促时瞬间洪峰流量导致系统超出最大负载,load 飙高,系统崩溃导致用户无法下单 2、“黑马”热点商品击穿缓存,DB 被打垮,挤占正常流量 3、调用端被不稳定服务拖垮,线程池被占满,导致整个调用链路卡死 这些不稳定的场景可能会导致严重后果。大家可能想问:如何做到均匀平滑的用户访问?如何预防流量过大或服务不稳定带来的影响?
0 0
容器持久化存储-容器有状态应用调研报告
容器持久化存储-容器有状态应用调研报告
0 0
MySQL大表历史数据迁移
MySQL大表历史数据迁移
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载