java web 保护_java web项目请求控制及简单漏洞防范
背景:當時項目沒用什么框架,過濾器,請求限制等都需要自己手寫。
1、請求加時間戳
在后臺過濾器中可以加判斷,如果請求時間戳與服務器時間相差太大,可以返回異常,具體情況可以具體使用。
請求中加時間戳的示例如下:
①form表單提交,在表單內加隱藏域,通過js代碼給id賦值。
$("#curdate").attr("value",timestamp);
②ajax請求后臺
var timestamp =(newDate()).valueOf();
var data={"a":a,"b":b,"curdate":timestamp};
2、jsp獲取數據需要驗證
例以下代碼可能存在漏洞:
...
Employee ID:
如果 eid 只包含標準的字母或數字文本,這個例子中的代碼就能正確運行。如果 eid 里有包含元字符或源代碼中的值,那么 Web 瀏覽器就會像顯示 HTTP 響應那樣執行代碼。
起初,這個例子似乎是不會輕易遭受攻擊的。畢竟,有誰會輸入導致惡意代碼的 URL,并且還在自己的電腦上運行呢?真正的危險在于攻擊者會創建惡意的 URL,然后采用電子郵件或者社會工程的欺騙手段誘使受害
者訪問此 URL 的鏈接。當受害者單擊這個鏈接時,他們不知不覺地通過易受攻擊的網絡應用程序,將惡意內容帶到了自己的電腦中。這種對易受攻擊的 Web 應用程序進行盜取的機制通常被稱為反射式 XSS。
所以需要將數據過濾,使用c標簽,再加上自定義el表達式,過濾特殊字符。最終代碼如下:
①引入c標簽
②自定義el函數
1在任意位置寫一個過濾方法
public classELFilter {public staticString filter(String message){if(message==null){return null;
}//結合實際,數據都為簡單的數字或者字母漢字,不會出現特殊符號,把以下特殊字符直接抹掉
message = message.replace("
message= message.replace(">", "");
message= message.replace("?", "");
message= message.replace("#", "");
message= message.replace("$", "");
message= message.replace("&", "");
message= message.replace("%", "");
message= message.replace("\n", "");
message= message.replace("\"", "");
message= message.replace("'", "");
message= message.replace("{", "");
message= message.replace("}", "");returnmessage;
}
}
2在項目WEB-INF下創建 elfilter.tld 文件,內容如下:
1.0
2.0
function
/WEB-INF/elfilter.tld
filter
com.a.b.util.elecheat.ELFilter
java.lang.String filter(java.lang.String)
3前臺引用
3、隱藏http響應頭中的nginx或者apach版本信息
tomcat
修改之前? ?Server:Apache-Coyote/1.1? ,泄露了當前容器的類型,可能會被針對攻擊
修改方法:
在tomcat的conf路徑下,server.xml中,
nginx
修改nginx.conf
http {
……
server_tokens off; ->即可隱藏版本號
…….
}
4、----
---禁制除get、post外其他的訪問方式
---限制同一ip訪問頻率
---前后臺數據獲取時加入驗證或者過濾
---cookie安全? ?COOKIE安全與防護
---http頭信息
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java web 保护_java web项目请求控制及简单漏洞防范的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java语言基本语法_Java语言基本语
- 下一篇: 石膏线多少钱啊?