iT邦幫忙

0

如何寫才能讓websocket 聊天室中包含網址的訊息,點按可以前往該連結網址

各位大大好!我有寫了一個websocket聊天室,可以讓用戶彼此傳送訊息,但是如果用戶傳的訊息是網址,例如:https://google.com ,系統會將它辨識成一般字符串。
請教大大!我該怎麼做?才能讓系統可以辨識網址?
任何協助都將感恩於心,謝謝!

看更多先前的討論...收起先前的討論...
提示:bbcode 、正則
感謝大大協助,但我還不明瞭,能否請大大提供研讀資訊,感謝
haward79 iT邦新手 3 級 ‧ 2021-11-09 09:12:23 檢舉
用 REGEX 擷取 URL
https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
如 haward79 說的。將字串內可能是網址的。利用正則的規則來幫你判斷出來。
然後再將該字串轉成
```
<a href="字串值">字串值</a>
```
這樣就會有連結了。

BBCODE的做法是大同小異。只是處理的方式是多一層。
```
[url=字串值]字串值[/url]
```
這樣字串進去後,分析處理後輸出A
但一般聊天室來說。我會用BBCODE的方式處理。
因為可以降低被注入的可能性。
感謝 @haward79 大大,我來研讀一下
感謝 @浩瀚星空 大大

2 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2021-11-09 09:53:22

聊天室是你寫的對吧
試試看輸入<a href="https://google.com">https://google.com</a>
接收端會如何顯示

如果會顯示成可點擊的超連結
那就在發送之前把網址 replace 成 HTML code 即可

關鍵就在於
你寫的 chatroom 是否支援 HTML 語法

看更多先前的回應...收起先前的回應...
淺水員 iT邦高手 2 級 ‧ 2021-11-09 10:12:37 檢舉

然後再輸入 <script>alert('hello')</script> 試試看
確認有沒有XSS的癲測試

謝謝大大門熱心協助,我目前採用了@浩瀚星空 大的指導,已經搞定。再次謝謝!

player iT邦大師 1 級 ‧ 2021-11-09 22:05:20 檢舉

直接支援HTML輸入的聊天室
可能被人惡意傳視窗炸彈(無限循環一直開新視窗)
或是轉址到惡意網站
orz

所以才會需要BBCode或Markdown之類的語法
去間接轉換成HTML

@player 謝謝您的說明
另外!能否請簡易示範一下1、 BBCode 的寫法 2、視窗炸彈 的寫法

2
混水摸魚
iT邦研究生 3 級 ‧ 2021-11-09 11:01:03

這個給你參考參考
https://www.webteach.tw/?p=261

感謝分享

我要發表回答

立即登入回答