簡體   English   中英

用於保護 java/jsp 的 SQL/javascript 注入的 Lib

[英]Lib to protect SQL/javascript injection for java/jsp

任何人都知道一個很好的庫,我可以在插入字符串之前在其中運行字符串,它可以去除 sql/javascript 代碼? 在jsp頁面中運行。

理想情況下,lib 將是:

  • 自由
  • 輕的
  • 便於使用

提前感謝 SO 社區,他們會很樂意回復:)

Apache Commons lang StringEscapeUtils 將為您提供一些幫助。 它逃脫,不剝離。

http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html

編輯:轉義可以使您免於注入攻擊,因為它確保用戶輸入的數據不會作為代碼執行,而是始終作為數據呈現給用戶。

您需要依靠數據庫 api 的機制來使用參數化查詢。 如果您首先動態構建一個 sql 字符串,然后想要清理完成的查詢字符串,那么您就做錯了。 那只是自找麻煩。


編輯:重新閱讀您的問題后,我似乎誤解了您的要求。 對於您問題的 sql 注入部分,我堅持我最初的評論是准確的。 為此,您肯定需要真正的查詢參數。

至於過濾掉javascript,我認為還沒有真正的標准方法來做到這一點。 我知道傑夫在 SO 上發布了他們在這里使用的代碼,但我沒有方便的鏈接。 如果我能找到它,我會發布它。

看看 OWASP 上的AntiSamy 我想這可能就是你要找的。 我目前不在 Java 中工作,所以我不能告訴你它是如何執行的。

您要說的是,對於添加到字符串中的每個可能條目,我必須首先刪除“惡意”數據。 是的,這是有道理的,因為我無法分辨哪些是作為輸入添加的,哪些是查詢本身的一部分。

好的,我想我需要重新開始更改一些代碼:) api 的問題仍然存在:)

c:out 標簽默認轉義 XML。 這對於存儲用戶輸入很方便,因為綁定值仍然是用戶的輸入,但瀏覽器生成的源將使用轉義條目。

為了防止 SQL 注入,請使用 PreparedStatement 對象。 如果您正在使用某個持久層,請確保它使用 PreparedStatement 對象。 對於惡意 HTML 和 JavaScript,請使用 . 默認情況下,這會轉義 XML 字符。 您還可以使用 fn tld 中的 JSTL 函數 escapeXml。

只是改寫其他人在這里給出的建議:

OP 希望防止 SQL 和 JavaScript 注入攻擊。

通過確保使用參數化查詢/綁定變量向數據庫提供用戶輸入,可以防止 SQL 注入攻擊。 在 Java 世界中,使用PMD (和PMD 規則)和Findbugs (默認情況下這些規則內置在 Findbugs 中)將幫助您確定代碼庫中易受 SQL 注入攻擊的位置。 OWASP 有一篇關於在 Java 中防止 SQL 注入的好文章。

就腳本注入而言,防止攻擊者注入的腳本被執行的最安全方法是確保用戶輸入在用作輸出時使用編碼格式顯示 - 對於網絡應用程序,這將是HTML 編碼。 這個 OWASP 頁面向您展示了如何在 Java 中執行 HTML 編碼。

如果您想保護您的應用程序免受 javascript 注入,那么您需要檢測或掛鈎以您的 javascript 作為參數的方法,在 mongodb 的情況下,eval() 方法可以在 mongo 服務器上執行 javascript。 您可以按照以下鏈接來減輕 ssjs 攻擊。 https://www.sciencedirect.com/science/article/pii/S1568494619305022

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM