チケット #283 (assigned 不具合)
upload でjavascriptが埋め込めるセキュリティ的脅威があった
| 報告者: | mn | 担当者: | atsuko |
|---|---|---|---|
| 優先度: | 備忘録 | マイルストーン: | Problems |
| コンポーネント: | Galaxy | バージョン: | |
| キーワード: | 関係者: | mn, atsuko | |
| GanttChart表示: | OFF | 依存TaskNo: | |
| 開始予定日: | YYYY/MM/DD | 終了予定日: | YYYY/MM/DD |
説明
該当コード lib/galaxy/tools/actions/upload.py
def check_html( self, temp_name, chunk=None ):
if chunk is None:
temp = open(temp_name, "U")
else:
temp = chunk
regexp1 = re.compile( "<A\s+[^>]*HREF[^>]+>", re.I )
regexp2 = re.compile( "<IFRAME[^>]*>", re.I )
regexp3 = re.compile( "<FRAMESET[^>]*>", re.I )
regexp4 = re.compile( "<META[^>]*>", re.I )
lineno = 0
for line in temp:
lineno += 1
matches = regexp1.search( line ) or regexp2.search( line ) or regexp3.search( line ) or regexp4.search( line )
if matches:
if chunk is None:
temp.close()
return True
if lineno > 100:
break
if chunk is None:
temp.close()
return False
変更案。
- regexp5 = re.compile( "<SCRIPT[>]*>", re.I ) を追加。
- matches = regexp1.search( line ) or regexp2.search( line ) or regexp3.search( line ) or regexp4.search( line ) or regrexp5( line ) を追加。
def check_html( self, temp_name, chunk=None ):
if chunk is None:
temp = open(temp_name, "U")
else:
temp = chunk
regexp1 = re.compile( "<A\s+[^>]*HREF[^>]+>", re.I )
regexp2 = re.compile( "<IFRAME[^>]*>", re.I )
regexp3 = re.compile( "<FRAMESET[^>]*>", re.I )
regexp4 = re.compile( "<META[^>]*>", re.I )
regexp5 = re.compile( "<SCRIPT[^>]*>", re.I )
lineno = 0
for line in temp:
lineno += 1
matches = regexp1.search( line ) or regexp2.search( line ) or regexp3.search( line ) or regexp4.search( line ) or regrexp5( line )
if matches:
if chunk is None:
temp.close()
return True
if lineno > 100:
break
if chunk is None:
temp.close()
return False
チケットの履歴
Note: チケットについてのヘルプは
TracTickets を参照
して下さい。
