雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
2014-11-26 23:33
465 查看
在学习Web开发4年之后,我自己可以独立做一些基本的项目了。在加入前单位秒针,也做了几个Web项目。
我发现一个现象,很多公司大部分的Web项目,用到的技术很少,主要就是SSH等框架,实现一些行业的业务逻辑,仅此而已。
技术上很容易实现,无非就是效率问题。
我曾经觉得,相比别人,自己还是比较靠谱的。代码写得逻辑清晰,bug较少,进度按时完成。
直到后来,我陷入了深思。
那天,我想知道全国有多少个公司,地区分布,行业分布。我就去了,武汉某工商局网站查了下,发现有1千多万(当然,有很多都是已经注销或者死掉的)。
怎么尽可能多的拿到它们的数据呢?入侵他们的数据库,我貌似没有这个能力,也不想这么做,法律上风险也比较大。
我观察了网站的URL之后,采用了最简单的办法。 http://a.com?pageSize=1000000000&pageNo=1
这个网站查询结果最多显示10页,于是我就把每页显示的条数,逐步调整为该网站所能承受的最大值。pageSize太大,获得的数据量巨大,会把这个网站搞挂。
我就是采用这种方法, 获得了大量的真实数据。
我很想吐槽,工商局的网站真TMD垃圾, 到处是漏洞。我也很得意,看我Coder多厉害,稍加分析,抓住个bug,就可以为我所用。
-------------------------------------------------------------------
由于有了这次“黑客” 经历,我写分页代码的时候,专门做了检查。既然我可以黑别人,别人自然也可以黑我啊,反正是互相黑。
我的个人官网,最开始也没有怎么处理,今天去黑了下,问题真大。厉害一点的黑客,应该可以通过这个bug,干点坏事。
http://fansunion.cn/article/list.html?pageNo=1&pageSize=1
现阶段,只做了一些简单的“防范” 。
/**
* 检查pageSize的大小,如果大于最大值,显然是受到了“攻击”,调小有点。防止被攻击,比如把pageSize设置成10000,每页就显示10000条数据,给数据库查询造成很大压力。
*/
public void check() {
pageSize = Math.abs(pageSize);
pageNo=Math.abs(pageNo);
if (pageSize > maxPageSize) {
pageSize = defaultPageSize;
pageNo=1;
}
}
pageSize和PageNo都是整数Integer,而且必须是 正数,而不能是 负数,比如-1。每页显示的最大条数有限制,无论前端怎么传入pageSize,最多只显示50条。
-----------------------------------------------------------
就分页这么小的一个功能,安全问题一大堆,如果再考虑 复用、扩展、稳定,就更难了。
如果把靠谱的程序员,定义为:在保证进度的情况下,能写出 功能正确、安全、稳定、性能不错的代码,那么,真的不容易达到。
靠谱的程序员真的不容易做到,如果你敢认真地审视自己的代码的话。
目前码农一枚,先努力成为一名靠谱的程序员再说,走在靠谱的道路上~
共勉~
小雷FansUnion-博学的互联网技术工作者
2014年11月26日
湖北武汉循礼门
原文首发:http://fansunion.cn/article/detail/527.html
我发现一个现象,很多公司大部分的Web项目,用到的技术很少,主要就是SSH等框架,实现一些行业的业务逻辑,仅此而已。
技术上很容易实现,无非就是效率问题。
我曾经觉得,相比别人,自己还是比较靠谱的。代码写得逻辑清晰,bug较少,进度按时完成。
直到后来,我陷入了深思。
那天,我想知道全国有多少个公司,地区分布,行业分布。我就去了,武汉某工商局网站查了下,发现有1千多万(当然,有很多都是已经注销或者死掉的)。
怎么尽可能多的拿到它们的数据呢?入侵他们的数据库,我貌似没有这个能力,也不想这么做,法律上风险也比较大。
我观察了网站的URL之后,采用了最简单的办法。 http://a.com?pageSize=1000000000&pageNo=1
这个网站查询结果最多显示10页,于是我就把每页显示的条数,逐步调整为该网站所能承受的最大值。pageSize太大,获得的数据量巨大,会把这个网站搞挂。
我就是采用这种方法, 获得了大量的真实数据。
我很想吐槽,工商局的网站真TMD垃圾, 到处是漏洞。我也很得意,看我Coder多厉害,稍加分析,抓住个bug,就可以为我所用。
-------------------------------------------------------------------
由于有了这次“黑客” 经历,我写分页代码的时候,专门做了检查。既然我可以黑别人,别人自然也可以黑我啊,反正是互相黑。
我的个人官网,最开始也没有怎么处理,今天去黑了下,问题真大。厉害一点的黑客,应该可以通过这个bug,干点坏事。
http://fansunion.cn/article/list.html?pageNo=1&pageSize=1
现阶段,只做了一些简单的“防范” 。
/**
* 检查pageSize的大小,如果大于最大值,显然是受到了“攻击”,调小有点。防止被攻击,比如把pageSize设置成10000,每页就显示10000条数据,给数据库查询造成很大压力。
*/
public void check() {
pageSize = Math.abs(pageSize);
pageNo=Math.abs(pageNo);
if (pageSize > maxPageSize) {
pageSize = defaultPageSize;
pageNo=1;
}
}
pageSize和PageNo都是整数Integer,而且必须是 正数,而不能是 负数,比如-1。每页显示的最大条数有限制,无论前端怎么传入pageSize,最多只显示50条。
-----------------------------------------------------------
就分页这么小的一个功能,安全问题一大堆,如果再考虑 复用、扩展、稳定,就更难了。
如果把靠谱的程序员,定义为:在保证进度的情况下,能写出 功能正确、安全、稳定、性能不错的代码,那么,真的不容易达到。
靠谱的程序员真的不容易做到,如果你敢认真地审视自己的代码的话。
目前码农一枚,先努力成为一名靠谱的程序员再说,走在靠谱的道路上~
共勉~
小雷FansUnion-博学的互联网技术工作者
2014年11月26日
湖北武汉循礼门
原文首发:http://fansunion.cn/article/detail/527.html
相关文章推荐
- 雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
- 雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
- 雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
- (转)怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆
- 从A页面单击 window.open 打开了B页面 B页面没有关闭再次点击A页面的这个链接, 让他刷新B页面而不是在打开一个B页面可以做到吗?
- 怎样成为一个优秀的程序员,而不是一个优秀的码农?
- 【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 怎么成为一个优秀的程序员,而不是一个优秀的码农
- 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心, 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
- 怎样成为一个优秀的程序员,而不是一个优秀的码农?
- 开发好一个软件功能模块不是光有激情、有干劲、有技术就可以得到成功的
- 我不是一个程序员
- 去年这时候辞职一个,不算辞退算是自动劝退2个程序员,不知道他们是否还是在当程序员,大家可以借鉴
- 我也不是一个程序员
- 开发好一个软件功能模块不是光有激情、有干劲、有技术就可以得到成功的
- 十年做到CTO 一个美国程序员的职业晋升路