89081


マークダウンにurlだけリンクが貼られることは、セキュリティに問題ありませんか？

試したこと  
マークダウンが実装されている入力欄に、下記htmlを記述すると、aタグは無効化されますが、展開されたURL部分にリンクが自動的に張られます。  
これは正しい挙動ですか？

[code]

    <a href="https://ja.stackoverflow.com/questions/ask">質問する - スタック・オーバーフロー</a>
    
[/code]

任意userが投稿可能なフォームでは、リンクが貼られること自体が問題なのではなく、HTMLタグ使用可の状態がセキュリティ的に問題あるということですか？


CC BY-SA 4.0
2022-05-27T01:53:20.580
89077
2022-05-27T04:42:05.827
2022-05-27T03:20:52.273
7886
7886
question
markdown
一般的に、マークダウンが実装されている入力欄へ記述したurlにリンクが貼られることは、セキュリティ的に問題ありませんか？　正しい挙動ですか？


`<a>`タグが認識されるかはMarkdown次第なので何とも言えません。

ただしMarkdownからHTMLを生成する際にリンクを自動生成する場合、[リンク種別](https://developer.mozilla.org/ja/docs/Web/HTML/Link_types)として
`nofollow` や `noreferrer` を付けます。MDNから引用します。

>   * `nofollow`  
>
> リンク先の文書は、リンク元ページの作者が推薦するものではないことを示します。例えば作者が管理しているものではない、悪い例である、あるいは二者間に営利関係がある（販売用のリンク）などです。このリンク種別は、人気ランキングの測定技術として検索エンジンが使用するかもしれません。
>   * `noreferrer`  
>  別のページへ移動する際にリンク元ページのアドレスなどの値を、ブラウザーが `Referer:` HTTP
> ヘッダーでリファラーとして送信しないようにします。
>


CC BY-SA 4.0
2022-05-27T04:31:32.790
89079
2022-05-27T04:31:32.790
4236
89077
answer


フォーム入力の内容を HTML もしくは Markdown として解釈するのとは別に、本文中の URL (のような文字列)
を自動でハイパーリンクに置き換える置換処理が別にあるのではないでしょうか。

例えばスタックオーバーフローでも、本文中に URL を書くだけで HTML や Markdown
での装飾はしなくても勝手にハイパーリンクに置き換える処理がされます。

「セキュリティ的に問題ありませんか？」に対しては、何をもって危険/安全の判断をするかによって変わってくるので一概には言えません。

**参考:** re9 さん自身による過去質問

[HTMLエスケープについて](https://ja.stackoverflow.com/q/66758/3060)

> HTMLエスケープはどういう時に必要ですか？


CC BY-SA 4.0
2022-05-27T04:40:30.097
89080
2022-05-27T04:40:30.097
3060
89077
answer


マークダウンの出力側がHTMLタグを解釈するか、無視するか除外するかどうかは[出力側にゆだねられて](https://tex2e.github.io/rfc-
translater/html/rfc7763.html)おり、一般的には決定事項ではないです。

ですが、あまりに方言が多くなり、マークダウンの仕様の違いに対して問題提起をして  
マークダウンを一般化を進めている[CommonMark](https://commonmark.org/)というプロジェクトにおいてはタグが容認されています。  
試してみてください  
<https://spec.commonmark.org/dingus/>

ですがまだまだ方言が多く採用しているパーサー（マークダウンを解析し出力する）によってはタグが容認されたりされなかったりします。

そのため正しい挙動ですかという意味では、そのパーサーの仕様なので正しい挙動です。

任意のHTMLが出力でき、スクリプトの実行が可能な場合は  
・別のWebページへのリダイレクト  
・リモートコンテンツのダウンロード  
・個人を特定できる情報のアップロード  
などの実行が可能になります。場合によってはブラウザの脆弱性をついての攻撃や無限にウインドウを出すなどの悪質な嫌がらせも可能になります。

もちろんHTMLの中でセキュリティ的に懸念になるタグや属性を排除して、開発することも可能ですが、ほぼHTMLを解析する機能を開発をすることになるので、開発するコストもHTMLの仕様の変更に対応する保守もそれなりにかかる印象です。


CC BY-SA 4.0
2022-05-27T04:42:05.827
89081
2022-05-27T04:42:05.827
22665
89077
answer