diff -urN ../htmllint.orig/htmllint.cgi ./htmllint.cgi --- ../htmllint.orig/htmllint.cgi Sun May 4 00:30:00 2014 +++ ./htmllint.cgi Fri May 9 01:15:00 2014 @@ -140,6 +140,16 @@ } } +# HEADなどの無意味なHTTPメソッドを制限する +# 他サイトへの攻撃の踏み台としてHEADを悪用するケースがあったので +if ($cgi->request_method !~ /^(GET|POST)$/o) { + # (rfc2616 10.4.6 & 14.7) + print(qq|Status: 405 Method Not Allowed\x0D\x0A|, + qq|Allow: GET, POST\x0D\x0A|, + qq|Content-Type: text/html\x0D\x0A\x0D\x0A|); + &Exit; +} + if ($cgi->param('Method') =~ /^(?:Data|File)$/oi) { $RURL = $IRI = $URL = ''; } else {