「FizzBuzzより実用的なプログラマ向け面接問題考えた」をJavaで解答

liquidfunc2010-09-23


FizzBuzzより実用的なプログラマ向け面接問題考えた - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
コメント欄に投稿後、サニタイズエスケープの違いから勉強しなおしました。要件はたぶん満たせてるはず。脆弱性みつけたら教えてください。

gistにうpしたコード


gistは簡単に公開できて、ヒストリーもみれるところが良いですね。

実行結果

mainメソッドに書いてあるのはテストコードです。HTMLを出力するようにしてあるので、それをブラウザで見ることで適切にエスケープされているかを確認します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<pre>
リンク <a href="http://example.com/">http://example.com/</a>
<a href="https://twitter.com/">https://twitter.com/</a>
<a href="http://twitter.com/liquidfunc">@liquidfunc</a> こんにちはこんにちは!!
<a href="http://twitter.com/#search?q=%23nicovideo">#nicovideo</a>
hoge
&lt;&gt;&amp;&quot;&#39&lt;&gt;&amp;&quot;&#39&lt;&gt;&amp;&quot;&#39
<a href="http://twitter.com/javascript:alert(&#39hello&#39);">@javascript:alert(&#39hello&#39);</a>
&lt;script&gt;alert(&#39hello&#39);&lt;/script&gt;
&lt;script src=&quot;http://example.jp/malicious.js&quot;&gt;
</pre>
</body>
</html>

生成したHTMLをブラウザで表示


タグの閉じ括弧でHTMLが壊れてないことや、scriptタグがただの文字列として認識されていることが確認できます。


liquidfuncは求職中なので、いっしょに働かせてくれる会社さんTwitterまでご連絡くださいね!!
主にJavaJavaフレームワークを使った開発経験があります。SQLLinuxUnixコマンド、bash、vi、正規表現、printf関数、XML SchemaXSLT、HTTP、HTML/CSSJavaScriptjQueryなどなど大体できます。できないことでもできるようになります。