日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat对URL合法字符的判断(RFC 7230 and RFC 3986 异常排查)

發布時間:2025/3/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat对URL合法字符的判断(RFC 7230 and RFC 3986 异常排查) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

  • 起因

有一個數據上報接口,之前在物理機上部署,數據上報正常。

最近將項目遷移到 docker 中,結果出現了異常如下:

Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:192)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)
  • 問題原因

問題排查過程:略

原因:請求中出現了字符"{"(示例請求)

https://127.0.0.1:8080/metric?data=[{%22app

在不更改接口數據的前提下,解決方案為:在tomcat的cataline.properties追加配置

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

官方文檔鏈接:http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other

tomcat.util.http.parser.HttpParser. requestTargetAllow

A string comprised of characters the server should allow even when they are not encoded. These characters would normally result in a 400 status.

The acceptable characters for this property are:?|,?{?, and?}

WARNING: Use of this option will expose the server to CVE-2016-6816.

If not specified, the default value of?null?will be used.

  • 問題來源

那么為什么之前接口不會出現異常呢?是tomcat版本不同導致的。

查看源碼后發現:org.apache.tomcat.util.http.parser.HttpParser

tomcat 8.2.3 版本及 tomcat 7.0.82 ,都有如下代碼,讀取配置

String prop = System.getProperty("tomcat.util.http.parser.HttpParser.requestTargetAllow"); if (prop != null) {for (int i = 0; i < prop.length(); i++) {char c = prop.charAt(i);if (c == '{' || c == '}' || c == '|') {REQUEST_TARGET_ALLOW[c] = true;} else {log.warn(sm.getString("httpparser.invalidRequestTargetCharacter",Character.valueOf(c)));}} }

而tomcat 8.0.14 版本中并沒有讀取配置,對 |?{?}?的處理,而是默認為合法字符。

static {// Setup the flag arraysfor (int i = 0; i < 128; i++) {if (i < 32) {isToken[i] = false;} else if (i == '(' || i == ')' || i == '<' || i == '>' || i == '@' ||i == ',' || i == ';' || i == ':' || i == '\\' || i == '\"' ||i == '/' || i == '[' || i == ']' || i == '?' || i == '=' ||i == '{' || i == '}' || i == ' ' || i == '\t') {isToken[i] = false;} else {isToken[i] = true;}if (i >= '0' && i <= '9' || i >= 'A' && i <= 'F' ||i >= 'a' && i <= 'f') {isHex[i] = true;} else {isHex[i] = false;}} }

雖然沒有進行全面的比對,但可以看出在 8.0.x 左右的一些版本中,tomcat.util.http.parser.HttpParser. requestTargetAllow?這個配置是沒有生效的,即? |?{?}?這3個符號認為是合法的。

  • 結論:
  • tomcat.util.http.parser.HttpParser. requestTargetAllow?這個字段可以解決URL中存在 |?{?}?字符的問題。
  • tomcat自tomcat 8.0.35版本之后對URL參數做了比較規范的限制,必須遵循RFC 7230 and RFC 3986規范,對于非保留字字符(json格式的請求參數)必須做轉義操作。
  • ?

    ?

    ?

    ?

    ?

    轉載于:https://my.oschina.net/pding/blog/1794176

    總結

    以上是生活随笔為你收集整理的tomcat对URL合法字符的判断(RFC 7230 and RFC 3986 异常排查)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 2023av在线| 乱精品一区字幕二区 | 国产一级片网址 | 欧美三日本三级少妇三 | 国产无遮挡又黄又爽又色 | 手机成人免费视频 | 亚洲色图欧美色 | 三级av网| 蜜桃av影视 | 久久久五月| a级黄毛片 | 久久99精品久久久 | av中文字 | 日日干视频 | 国产欧美日本 | 99精品欧美一区二区蜜桃免费 | 91亚洲在线 | 97超碰站| 欧美 唯美 清纯 偷拍 | 日本在线一区二区三区 | 久久午夜精品 | 国产精成人品免费观看 | 亚洲精华液一区二区 | 国产又粗又长 | 亚洲黄色精品视频 | 久久精品国产亚洲AV高清综合 | 最新中文字幕在线观看视频 | 无码人妻精品一区二区三区温州 | 午夜精品毛片 | 91n在线观看 | xxxx黄色片 | 日本一区免费看 | 99在线视频免费观看 | 国产二区电影 | 日本va欧美va欧美va精品 | 日韩色一区| 中文字幕在线观看高清 | 成人综合婷婷国产精品久久 | 久久久五月 | 欧美日韩国产在线 | 欧美一区二区三区成人 | 波多野结衣视频一区二区 | 日韩三级a| 精品91久久久久久 | 37p粉嫩大胆色噜噜噜 | 久久艹精品 | 调教91| 污漫在线观看 | 国产第一网站 | 操屁股视频 | 久久久久亚洲av无码专区首jn | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | 免费在线观看高清影视网站 | 牛牛精品视频 | 国产大片在线观看 | 欧美一区二区在线 | 精品动漫av| 日本做受 | 小明成人免费视频 | 91精品在线免费 | 国产性爱精品视频 | 免费av的网站 | 中文日韩av | 日韩xxx视频 | 日本精品免费一区二区三区 | 日韩久久精品一区二区 | 日本中文字幕免费观看 | 一级片国产 | 91av在线视频观看 | 99热这里 | 超级碰在线观看 | 午夜三级网站 | 免费欧美大片 | 天堂亚洲网 | 精品无码国产污污污在线观看 | 绯色av一区 | 国产一级特黄视频 | 欧美午夜理伦三级在线观看 | 麻豆视频网| 亚洲成人播放 | 在线天堂中文字幕 | 欧美日韩一区二区三 | www.狠狠 | 国产精品久久久久久久久久直播 | 精品欧美 | xvideos成人免费视频 | 在线网站av | 97超碰中文字幕 | 在线三级av| 久久国内视频 | 亚洲123区 | 日日操夜夜草 | 久久91亚洲精品中文字幕奶水 | 欧美日韩国产一区二区三区在线观看 | 国产欧美一区二区三区在线看蜜臀 | 成人免费一级视频 | 日韩av在线免费看 | 欧美综合影院 | 伊人艹 |