我又来水一帖的,关于服务端验权的问题

本贴最后更新于 2653 天前,其中的信息可能已经事过景迁

2016 年下半年我们公司开启了一个商城的项目。
其实我们每个人都想把整个项目做到最精细,但是我们公司的理念是现有房子,大小是另外一回事。
我们公司的项目是 JAVA 框架是 SSH,重点使用 struts2。
我是前端出身的,自然负责前端页面和与后端的对接。
一开始时间充裕,所以登录页面我画了 1 天时间,包括对帐号密码输入的验证和扫码登录的接口。
虽然时间长,但是基本完美。
但是随着项目的推进,我发现越来越不对劲,负责后端的同事每逢提交表单的时候都需要我对表单项进行验证。
在我真正感觉到蹊跷,是又一次我需要知道表单对应的 name 的时候,我打开了对应 action 的代码,结果发现。这个接口仅仅是一个存入的数据库的接口,而没有进行登录验证和对应的权限验证。
于是我有很调皮的点开了其他包括接口,发现果真如此。
也就是说,在我没有登录或者当前登录账户没有修改权限的情况下是可以使用相应的接口进行修改插入甚至删除的操作的。
难道仅仅需要前端验权而后端不需要么。
另外,我们的接口无论网页或者 app 都采用如同 https://hacpai.com/post?type=0 这样的接口进行表单提交,网页的表单提交没有做表单令牌,而在 app 上甚至参数是最简单的明文的 userid 作为参数提交。总感觉会出问题
虽然我是一个前端,在 php 上虽然不算过多精通,但是在我写过的 wechat 对接的项目中使用到了表单令牌,在我目前的项目中,与 webapp 对接都是用的是自己编写的加密 token,app 需要保存并使用 token 才可以换取所需要的数据甚至添加好友聊天等功能。这些都是我自己做的项目。
就像我回复的一篇帖子一样,在创业性公司,永远缺少大牛,大家也是身位平等,毕竟我是前端,我不可能也不必要甚至不方便跟后端商量或提出这样的事情。而且人家是我的主管,而我仅仅是一个没有任何实权的副经理。
写在接口的时候偶然想起这么糟心的一件事情,就来吐槽一下。
各位对前端与后端对接所发送的数据接口有什么建议,如何安全的提交表单,如何更加方便的验权,平时的经验,如果方便,麻烦教导下。

一个迷茫的前端

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    85 引用 • 1201 回帖 • 450 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • c2y2

    你这头像,严重干扰注意力啊

    1 回复
  • 其他回帖
  • cykcyk123
    作者

    ==是培训出身的我也认了
    大致有如下原因
    1、老板太心急上线了,
    2、后端嫌太麻烦了,
    3、不停加新功能导致我们没时间加上去

    1 回复
  • 88250

    能用就行,别想多了。关于安全问题,可以在适当的时机表达出来,让团队中的人都知道就行,大家如果默认,那就....就那样了

    2 回复
  • lijp

    像你说的两个月就上线的项目,我觉得在关键功能点前后端都验证一下就行了,毕竟是商城系统。另外就是洁癖对程序员来说是好事,可是根据我的经验,像你说的这种着急项目,先有个大概再说,能 run 起来,然后再完善细节。

    1 回复
  • 查看全部回帖

推荐标签 标签

  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 3 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 176 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 18 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 13 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 590 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 623 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 4 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 80 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    25 引用 • 215 回帖 • 164 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 742 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 247 回帖 • 176 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 46 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    75 引用 • 145 回帖
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 23 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 285 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 605 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 346 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 自由行
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 126 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 696 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1398 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 43 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 370 关注