チケット #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 を参照
して下さい。