@@ -115,8 +115,7 @@ public String urlVul(HttpServletRequest request) throws Exception{
115115 }
116116 }
117117
118-
119- // 安全代码
118+ // 利用InternetDomainName库获取一级域名的安全代码 (一级域名白名单)
120119 @ RequestMapping ("/seccode" )
121120 @ ResponseBody
122121 public String seccode (HttpServletRequest request ) throws Exception {
@@ -141,4 +140,73 @@ public String seccode(HttpServletRequest request) throws Exception{
141140 return "URL is illegal" ;
142141 }
143142 }
143+
144+ /**
145+ * @desc 自定义一级域名白名单
146+ * @usage http://localhost:8080/url/seccode1?url=http://aa.taobao.com
147+ * @param request
148+ * @return
149+ * @throws Exception
150+ */
151+ @ RequestMapping ("/seccode1" )
152+ @ ResponseBody
153+ public String seccode1 (HttpServletRequest request ) throws Exception {
154+
155+ // 定义一级域名白名单list,用endsWith加上.判断
156+ String whiteDomainlists [] = {"taobao.com" , "tmall.com" };
157+
158+ String url = request .getParameter ("url" );
159+ System .out .println ("url: " + url );
160+ URI uri = new URI (url );
161+ URL u = new URL (url );
162+ // 判断是否是http(s)协议
163+ if (!u .getProtocol ().startsWith ("http" ) && !u .getProtocol ().startsWith ("https" )) {
164+ return "URL is not http or https" ;
165+ }
166+ // 使用uri获取host
167+ String host = uri .getHost ().toLowerCase ();
168+ System .out .println ("host: " + host );
169+
170+ for (String domain : whiteDomainlists ){
171+ if (host .endsWith ("." + domain )) {
172+ return "good url" ;
173+ }
174+ }
175+
176+ return "bad url" ;
177+ }
178+
179+ /**
180+ * @desc 自定义多级域名白名单
181+ * @usage http://localhost:8080/url/seccode2?url=http://ccc.bbb.taobao.com
182+ * @param request
183+ * @return
184+ * @throws Exception
185+ */
186+ @ RequestMapping ("/seccode2" )
187+ @ ResponseBody
188+ public String seccode2 (HttpServletRequest request ) throws Exception {
189+
190+ // 定义多级域名白名单,判断使用equals
191+ String whiteDomainlists [] = {"aaa.taobao.com" , "ccc.bbb.taobao.com" };
192+
193+ String url = request .getParameter ("url" );
194+ System .out .println ("url: " + url );
195+ URI uri = new URI (url );
196+ URL u = new URL (url );
197+ // 判断是否是http(s)协议
198+ if (!u .getProtocol ().startsWith ("http" ) && !u .getProtocol ().startsWith ("https" )) {
199+ return "URL is not http or https" ;
200+ }
201+ // 使用uri获取host
202+ String host = uri .getHost ().toLowerCase ();
203+ System .out .println ("host: " + host );
204+
205+ for (String domain : whiteDomainlists ){
206+ if (host .equals (domain )) {
207+ return "good url" ;
208+ }
209+ }
210+ return "bad url" ;
211+ }
144212}
0 commit comments