事实上,大部分后端也不能删库。但前端和后端都可以通过破坏数据的方式达到目的。
前端毕竟还是可以大量调用ajax API的,这就可以通过这些API来读写数据库里的数据。
如果想要隐藏,也可以善用一些前端的特性。比如CORS类请求,浏览器会先发一个OPTIONS请求,确认权限可用后再发送一个正式的请求。但就使得一次JS CORS请求,浏览器实际上发了两次请求,也会受到两次响应,那么就可以充分利用两次响应里的处理函数来两次调用写入类API。这会使得其他人接手的调试难度提高。
可以利用调试阶段,多试试各种API的权限限制。毕竟要做大完善的权限限制是需要不少工作量的,于是很多公司的ajax api事实上漏洞百出。比如管理员可以操作某个用户的信息,于是允许用户信息修改API允许用userid来指定要修改的。但API内部可能偷懒为了给管理员高权限而没做验证。让前端传入自己的userid。那么此时一个精心修饰的bug,就可以尝试去修改他人的信息。
前端作为系统的一环,对系统并不是只读的。只要涉及写入的部分,就都可以用来破坏数据。
除了破坏数据,也可以通过一些无缓存API来拖慢整个系统的速度。比如用户登录就是不能用缓存的,那么可以在前端精心隐藏一些看似合理的功能来大量调用此类无缓存API来极大增即系统负载。比如用户输入用户名和密码时,每一次键盘敲击就发送一次登录请求。这会使得登录请求访问量暴增几十倍。而被追查时大可以说成是自己不小心把登录事件绑定成了键盘事件。
各类UGC相关的API,也可以用于大量制造垃圾数据,比如一次评论变成了多次。其他形如发布文章,点赞,等等多种写入类API,都是无缓存的,会对后端造成严重的写入压力。
前端同学要有自信,想要进局子还是有很多办法的。