For normal browser User-Agents, this isn't a big issue: they're fetching pages over GET, getting redirected to HTTPS at that point, and then POST-ing to protocol-relative URLs. However, there's other code out there that just does direct initial POSTs to us over HTTP apparently. Direct POST traffic has two issues wrt HTTPS:
- Redirecting POST traffic is tricky to begin with. Not all user agents understand how to do it correctly or consistently. General wisdom seems to be that 307 is the correct code (which is similar in nature to 302, but meant to avoid POST being transformed into GET - there's a 308 that's like 301 as well, but it's even less likely to be widely implemented).
- Redirecting POST traffic doesn't actually secure it if the clients don't remember to keep using HTTPS afterwards anyways, because they've already POSTed their data insecurely before a redirect can happen. It's really more of a stopgap / wake up call move, as a precursor to simply breaking it with 403 Forbidden or similar in an effort to get people to notice the breakage and fix their software/configurations. Arguably, we could just skip the redirect step and go straight to breaking them. Either one requires that we take what measures we can to notify the community and/or fix broken software where we can first.
Currently we're not doing either one, and there's a fairly decent volume of insecure POST traffic flowing. I took a few minutes' sample on a single text cache server and turned up these counts of User-Agents doing it:
# cut -d: -f2- postua.log |sort|uniq -c|sort -rn 499 Peachy MediaWiki Bot API Version 2.0 (alpha 8) 234 php wikibot classes 203 AnomieBOT/1.0 (TagDater; see [[User:AnomieBOT]]) 150 Jakarta Commons-HttpClient/3.1 48 Kindle/1143472533 CFNetwork/711.4.6 Darwin/14.0.0 40 www.productontology.org/1.0 (Contact: martin.heppATunibw.de) AppEngine-Google; (+http://code.google.com/appengine; appid: s~productontology) 32 Java/phoneme_advanced-Core-1.3-b16 sjmc-b111 29 plog4u.org/3.0 28 ColdFusion 23 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFTHWI Build/KTU84M) 21 SineBot/1.5.19(User:SineBot) 19 Kindle/1143472533 CFNetwork/711.3.18 Darwin/14.0.0 13 Java/1.7.0_21 13 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFSOWI Build/KTU84M) 10 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFASWI Build/KTU84M) 9 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0 8 Kindle/1143214083 CFNetwork/711.3.18 Darwin/14.0.0 8 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T230NU Build/KOT49H) 8 AnomieBOT/1.0 (MedComClerk; see [[User:MediationBot]]) 7 Zend_Http_Client 7 WikiFunctions ApiEdit/5.2.0.1 (Microsoft Windows NT 6.1.7601 Service Pack 1; .NET CLR 2.0.50727.5420) 7 Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 7 Kindle/1143214083 CFNetwork/711.4.6 Darwin/14.0.0 6 Kindle/1143472533 CFNetwork/711.1.16 Darwin/14.0.0 6 Kindle/1143472533 CFNetwork/672.1.15 Darwin/14.0.0 5 UKBot [[:no:Bruker:UKBot]] - MwClient/0.7.2.dev1 (https://github.com/mwclient/mwclient) 5 Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900V Build/LRX21T) 5 Dalvik/2.1.0 (Linux; U; Android 5.0.1; SCH-I545 Build/LRX22C) 5 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFARWI Build/KTU84M) 4 Snoopy v1.2.4 4 MwClient/0.6.6 (https://github.com/mwclient/mwclient) 4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727 ; .NET CLR 4.0.30319) 4 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ) 4 JWBF DEVEL 4 Dalvik/2.1.0 (Linux; U; Android 5.1.1; Nexus 7 Build/LMY48G) 4 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFAPWI Build/KTU84M) 3 node.js - nodemw - commons-maintenance-bot@toollabs - Maintainer: Rainer Rillke - rillke@wikipedia.de - [[:commons:User:Rillke]] 3 Mozilla/5.0 (X11; U; Linux armv7l) AppleWebKit/999+ (KHTML, like Gecko) Version/5.0 Safari/999.9+ KindleWidgetUserAgent/1.0 3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) 3 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SD4930UR Build/KTU84P) 3 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-G900T Build/KOT49H) 3 Dalvik/1.6.0 (Linux; U; Android 4.4.2; LG-V410 Build/KOT49I.V41010d) 2 python-wikitools/1.2 2 Python-urllib/2.7 2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 2 Kindle/1143472533 CFNetwork/750.2 Darwin/15.0.0 2 Kindle/1143472533 CFNetwork/711.1.12 Darwin/14.0.0 2 Kindle/1143472533 CFNetwork/711.0.6 Darwin/14.0.0 2 Kindle/1142165514 CFNetwork/711.0.6 Darwin/14.0.0 2 DispensersTools (+http://dispenser.homenet.org/~dispenser/) 2 Dalvik/2.1.0 (Linux; U; Android 5.1; XT1097 Build/LPE23.32-14) 2 Dalvik/2.1.0 (Linux; U; Android 5.0.1; SM-N910V Build/LRX22C) 2 Dalvik/2.1.0 (Linux; U; Android 5.0.1; SM-N910P Build/LRX22C) 2 Dalvik/2.1.0 (Linux; U; Android 5.0.1; GT-I9505 Build/LRX22C) 2 Dalvik/1.6.0 (Linux; U; Android 4.4.4; 2014818 MIUI/V6.3.5.0.KHJMIBL) 2 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T530NU Build/KOT49H) 2 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T520 Build/KOT49H) 2 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T330NU Build/KOT49H) 2 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T310 Build/KOT49H) 2 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-G900H Build/KOT49H) 2 Dalvik/1.6.0 (Linux; U; Android 4.2.2; GT-P5210 Build/JDQ39) 2 Dalvik/1.6.0 (Linux; U; Android 4.2.2; GT-P5113 Build/JDQ39) 2 Dalvik/1.6.0 (Linux; U; Android 4.2.1; M470BSA Build/JOP40D) 2 Dalvik/1.6.0 (Linux; U; Android 4.1.1; HP Slate 7 Build/JRO03H) 2 Dalvik/1.6.0 (Linux; U; Android 4.0.4; LG-SU640 Build/Tomato_SU640_V20D_0629) 2 Avast SimpleHttp/3.0 2 Apache-HttpClient/UNAVAILABLE (java 1.4) 2 AnomieBOT/1.0 (BrokenRedirectDeleter; see [[User:AnomieBOT III]]) 1 Theo's Little Bot (http://en.wikipedia.org/wiki/User:Theo's_Little_Bot) / nodemw 1 The Incutio XML-RPC PHP Library -- WordPress/4.2.2 1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 1 Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36 1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) 1 MediaWiki::API/0.39 1 Kindle/1143472533 CFNetwork/711.2.23 Darwin/14.0.0 1 Kindle/1143214083 CFNetwork/672.1.15 Darwin/14.0.0 1 Kindle/1143210217 CFNetwork/711.1.16 Darwin/14.0.0 1 Kindle/1143210217 CFNetwork/711.1.12 Darwin/14.0.0 1 Kindle/1143210217 CFNetwork/672.1.13 Darwin/14.0.0 1 Kindle/1142951941 CFNetwork/711.3.18 Darwin/14.0.0 1 Kindle/1142951941 CFNetwork/711.1.16 Darwin/14.0.0 1 Kindle/1142951941 CFNetwork/672.1.15 Darwin/14.0.0 1 Kindle/1142706362 CFNetwork/711.1.16 Darwin/14.0.0 1 Kindle/1142706362 CFNetwork/672.1.15 Darwin/14.0.0 1 Kindle/1142706362 CFNetwork/672.1.14 Darwin/14.0.0 1 Kindle/1142423837 CFNetwork/711.2.23 Darwin/14.0.0 1 Kindle/1142423837 CFNetwork/711.1.16 Darwin/14.0.0 1 Kindle/1142169601 CFNetwork/672.1.14 Darwin/14.0.0 1 Kindle/1141899455 CFNetwork/609.1.4 Darwin/13.0.0 1 HTTPRetriever/1.3.0.0 1 GroupMeBotNotifier/1.0 1 Dalvik/2.1.0 (Linux; U; Android 5.1.1; Nexus 10 Build/LMY47V) 1 Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900H Build/LRX21T) 1 Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900F Build/LRX21T) 1 Dalvik/2.1.0 (Linux; U; Android 5.0; SAMSUNG-SM-N900A Build/LRX21V) 1 Dalvik/2.1.0 (Linux; U; Android 5.0; NXA116QC164 Build/LRX21V) 1 Dalvik/2.1.0 (Linux; U; Android 5.0; ASUS_T00J Build/LRX21V) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; XT1068 Build/LXB22.46-28) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; XT1033 Build/LXB22.46-32) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; VK810 4G Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; SM-T800 Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; SM-T705 Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; SM-T550 Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; SM-G925V Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; SAMSUNG-SM-T807A Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; LG-V400 Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; LG-D801 Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; HTC One Build/LRX22G) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; D5803 Build/23.1.A.1.28) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.2; C6802 Build/14.5.A.0.270) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.1; SM-N910T Build/LRX22C) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.1; SAMSUNG-SGH-I537 Build/LRX22C) 1 Dalvik/2.1.0 (Linux; U; Android 5.0.1; HTC6525LVW Build/LRX22C) 1 Dalvik/2.1.0 (Li 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; XT1254 Build/SU2-12) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; XT1056 Build/KXA21.12-L1.28) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; XT1049 Build/KXA21.12-L2.7) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; XT1030 Build/SU6-7.2) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SO-02G Build/23.0.B.1.38) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SO-01G Build/23.0.B.1.59) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SM-T337V Build/KTU84P) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SM-T337T Build/KTU84P) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SM-N910T Build/KTU84P) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SM-G530M Build/KTU84P) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; SAMSUNG-SM-G900A Build/KTU84P) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; MI 4LTE MIUI/V6.6.2.0.KXDCNCF) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; HTC Desire Eye Build/KTU84P) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.4; C6603 Build/10.5.1.A.0.292) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.3; Nexus 7 Build/KTU84L) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFTHWA Build/KTU84M) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.3; KFAPWA Build/KTU84M) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; XT811 Build/XT811) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; TM1088 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SPH-L900 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SPH-L710 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T320 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T311 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T231 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T217S Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T210R Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-P600 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-N900S Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-N9005 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SCH-I435 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SC-04E Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; SAMSUNG-SM-N900A Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; QMV7B Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; Panasonic P61 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; LGMS323 Build/KOT49I.MS32310c) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; LG-LS995 Build/KOT49I.LS995ZVA) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; LG-D295 Build/KOT49I.A1411108394) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; HUAWEI P7-L10 Build/HuaweiP7-L10) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; HP 10 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; GT-P5210 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; D6503 Build/17.1.2.A.0.314) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; BLU STUDIO 5.0 C HD Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; ASUS_T00J Build/KVT49L) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; A1-830 Build/KOT49H) 1 Dalvik/1.6.0 (Linux; U; Android 4.4.2; 306SH Build/SA300) 1 Dalvik/1.6.0 (Linux; U; Android 4.3; SM-S765C Build/JLS36C) 1 Dalvik/1.6.0 (Linux; U; Android 4.3; SM-N900T Build/JSS15J) 1 Dalvik/1.6.0 (Linux; U; Android 4.3; SM-N9005 Build/JSS15J) 1 Dalvik/1.6.0 (Linux; U; Android 4.3; GT-I9500 Build/JSS15J) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; SO-04E Build/10.3.1.B.2.42) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; SM-T110 Build/JDQ39) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; SH-08E Build/S8210) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; SGP311 Build/10.3.1.C.0.136) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; K00L Build/JDQ39) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; HUAWEI G750-T01 Build/HuaweiG750-T01) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.2; GT-I9152 Build/JDQ39) 1 Dalvik/1.6.0 (Linux; U; Android 4.2.1; A240 Build/JOP40D) 1 Dalvik/1.6.0 (Linux; U; Android 4.1.2; Xoom Build/JZO54K) 1 Dalvik/1.6.0 (Linux; U; Android 4.1.2; SHW-M250K Build/JZO54K) 1 Dalvik/1.6.0 (Linux; U; Android 4.1.2; SH-02E Build/S9290) 1 Dalvik/1.6.0 (Linux; U; Android 4.1.2; MediaPad 7 Youth Build/HuaweiMediaPad) 1 Dalvik/1.6.0 (Linux; U; Android 4.1.2; GT-P3100 Build/JZO54K) 1 Dalvik/1.6.0 (Linux; U; Android 4.1.2; GT-I9100 Build/JZO54K) 1 Dalvik/1.6.0 (Linux; U; Android 4.0.4; SAMSUNG-SGH-I727 Build/IMM76D) 1 Dalvik/1.6.0 (Linux; U; Android 4.0.3; GT-P5100 Build/IML74K) 1 Dalvik/1.6.0 (Linux; U; Android 4.0.3; F-01D Build/V08R31A) 1 AnomieBOT/1.0 (BAGBot; see [[User:AnomieBOT]])
The obvious community bots will probably be easy to fix with some notification. I'm more worried about things like Android/Kindle UAs in there. Why are they even in this list? It's possible it's from Apps on these devices that are using POSTs to api.php for getting article content snippets somehow? I would've thought it those would be GETs though. Could be our own apps for all I know.