[TEEDA-42] HtmlResponseWriter#writeURIAttribute(String, Object, String) が javascript: で始まるものもエスケープする Created: 2006-08-22  Updated: 2006-08-22  Resolved: 2006-08-22

Status: Resolved
Project: Teeda
Component/s: Teeda Core
Affects Version/s: 1.0-beta-5
Fix Version/s: 1.0-beta-6

Type: Bug Priority: Major
Reporter: shinsuke Assignee: manhole
Resolution: Fixed Votes: 0
Labels: None


 Description   

writeURIAttribute(String, Object, String)かencodeURIAttribute(String)でそれをチェックするようにした方が良い気がします。
SunRI とMyFaces もjavascript:をチェックしていました。ざっと見た感じでは、MyFaces のコードの方が良さそうな気もします。



 Comments   
Comment by manhole [ 2006-08-22 ]

対応しました。
(Revision: 1640)

Comment by manhole [ 2006-08-22 ]

勘違いに気づきました。

onclick="document.write("<b>xxx</b>");"

↑のようにエスケープされていても、javascriptとして↓のように解釈されて実行されるのですね。

document.write('<b>xxx</b>');

ですので、

  • writeAttribute
    • 今まで通り
  • writeURIAttribute
    • "javascript:"だったらwriteAttributeと同様にエスケープする

というロジックにすればOKそうです。

Comment by manhole [ 2006-08-22 ]

ではwriteURIAttributeの方も対応しますね。

  • writeURIAttribute
  • writeAttribute

どちらでも、"javascript:"で始まったら何もエスケープしないようにします。

Comment by shinsuke [ 2006-08-22 ]

修正をありがとうございます。
でも、writeURIAttributeに関しても、修正が必要です。現在、遭遇している問題は、form タグの action などURLを扱うところで、javascript :を書いたときに発生しています。そのため、MyFacesとかでは、チェックしてエスケープしないようにしているみたいです。
writeAttributeについては、確かにその修正があった方が良いような気がします。でも、MyFacesもSunRIもjavascript:をチェックなどしてないですね・・・。

Comment by manhole [ 2006-08-22 ]

writeURIAttributeではなくてwriteAttributeの方で、"javascript:"に対応しました。
"javascript:"を書くのはonclick属性等のevent系と考えたためです。
(onXxxxxはwriteAttributeにしているので。writeURIAttributeの方が良いのかな? どうでしょう??)

Comment by manhole [ 2006-08-22 ]

りょーかいです。
(TODOには入れていたのです)

Generated at Thu Apr 25 16:14:51 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.