雷观(七):靠谱的程序员,不是随便一个码农就可以做到的
在學習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
轉載于:https://www.cnblogs.com/qitian1/p/6463103.html
總結
以上是生活随笔為你收集整理的雷观(七):靠谱的程序员,不是随便一个码农就可以做到的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纹身多少钱一个啊?
- 下一篇: Linux多任务编程之五:exit()和