程序开发中的几个请不要相信
尽管这些经验或许并不算什么高深的知识,但它们确实是在网络安全领域中经过实践积累而来的宝贵经验。在此,我愿意将它们分享出来,希望能与各位一同学习。
我想强调的是,对于链接中的脚本攻击相关内容,感兴趣的朋友们可以深入了解。关于Web安全,我有一些经验想要分享。
1. 不要盲目信任Request.QueryString
在ASP时代,这个问题尤为严重。许多企业站的URL形式如"view.asp?id=x",如果直接改为"view.asp?id=x or 1=1",可能会暴露出一些你未曾想到的问题。虽然随着技术的发展,这种情况应该已经大大减少,但我们仍需要保持警惕。对于输入的数据,一定要进行数据类型验证或转换,防止SQL注入等攻击。
2. maxlength并不完全可靠
在Web开发中,我们经常会使用HTML的maxlength属性来限制用户输入的字符长度。这真的能保证用户提交的数据长度不超过maxlength吗?答案是否定的。用户可以通过各种手段绕过这个限制。我们必须在后台代码中对数据进行长度验证,确保数据的安全性。
3. 不要盲目信任Hidden
有时,我们会将一些信息保存在前台页面,然后再发送回去。为了隐藏这些信息,我们将其放在hidden元素中。用户提交数据时,hidden里的内容真的可靠吗?答案是不确定的。攻击者可以通过各种手段修改hidden元素的值。对于重要的数据,我们必须在服务器端进行验证,确保数据的真实性。
4. 客户端验证并非万无一失
对于客户端验证,如上述的Hidden和Request.QueryString的验证,虽然可以在一定程度上提高安全性,但并不能完全保证安全性。因为客户端验证完全依赖于用户的浏览器环境,如果客户端禁用了脚本或者修改了脚本代码,那么客户端验证就完全失效了。我们不能只依赖客户端验证来保证数据的安全性,必须在服务器端进行验证,确保数据的完整性和安全性。
提交验证
在正常的操作场景中,点击提交按钮会触发用户名不能为空等验证。想象一下,当你尝试在狼蚁网站的地址栏复制粘贴某些SEO优化代码,然后按下Enter,再尝试提交时,会发生什么呢?
比如这段代码:`javascript:alert(window.c=function(){document.getElementsByTagName("form")[0].onsubmit=function(){alert("我是不会验证数据的哦!");return true;}}())`。以前,在QQ空间里,似乎可以利用这种方式免费使用黄钻模板,但如今是否依旧可行呢?对于这种情况,后台往往需要进行二次验证。
编辑器的双刃剑特性
Cookie的安全隐患
网站中Cookie的使用是不可避免的,但稍有不慎,就可能泄露个人信息。Cookie的取和写都有相应的js方法,但具体细节已经难以追溯。为了保障安全,可以考虑对Cookie进行加密,尽管这样,敏感数据最好还是避免放在Cookie中。各位高手是否还有其他安全存储Cookie的妙招呢?
Request.UrlReferrer的不可靠性
有些开发者会利用UrlReferrer进行请求验证。请注意,这种方法并不可靠。比如创建HTTP请求时设定了Referer,但请求的UrlReferrer可能是伪造的。不应过分依赖UrlReferrer进行验证。
用户端的不确定性
用户是你永远不能小觑的潜在威胁。客户端的数据永远都不能轻信。select标签的内容也是不可信的。尝试创建一个页面,加入select标签,然后运行某些JavaScript代码,就能看到其中的风险。在此欢迎各位高手分享经验和建议。
Web开发中的验证和安全性是一个持续进化的挑战。我们需要不断学习和适应新的技术,以应对各种潜在威胁。在此呼吁各位开发者,保持警惕,共同构建一个更安全的Web环境。
以上内容仅供参考和学习交流之用,如有错误或不足,请谅解并欢迎指正。同时期待各位高手不吝赐教,共同提升Web开发的安全性和用户体验。
编程语言
- 程序开发中的几个请不要相信
- 浅谈原生JS实现jQuery的animate()动画示例
- 探讨-使用XMLSerialize 序列化与反序列化
- jQuery中dom元素上绑定的事件详解
- Javascript生成全局唯一标识符(GUID,UUID)的方法
- JQuery中解决重复动画的方法
- SQLServer2019配置端口号的实现
- nodejs 生成和导出 word的实例代码
- jQuery多个版本和其他js库冲突的解决方法
- 详解Mysql双机热备和负载均衡的实现步骤
- FormData+Ajax实现上传进度监控
- Node.js 路由的实现方法
- AngularJS基于provider实现全局变量的读取和赋值方法
- 深入php多态的实现详解
- javascript实现根据汉字获取简拼
- sqlite3迁移mysql可能遇到的问题集合