2015-10-24 82 views
3

我試圖找出如何讓用戶填寫自己的「關於」字段在他們的網站,我做的個人資料。最大的缺點是我想讓用戶能夠格式化他們的文本,就像您在論壇上發佈時格式化一樣,或者當您進入管理面板時Silverstripe用戶可以對其進行格式化。Silverstripe HTML字段驗證

我曾嘗試利用HTML字段即在silverstripe的。當我添加這個盒子時,它給了你這個真正的bext文本框,它可以接受任何東西,html,javscript等...

這真是不錯而且很花哨,直到我意識到兩個相交。使用HTML字段,用戶可以使用任何形式的編輯器。他們不能大膽,改變字體,大小等...另一個問題是,我在那裏輸入了一些JavaScript,並點擊保存。下次我打開頁面時,我用我在HTML字段中輸入的javascript警報迎接。

因此,這裏有我的兩個問題:

我怎樣才能給用戶(任何種類)的編輯,讓他們來塑造他們對部分。

我如何可以驗證字段,允許你做什麼,我問的第一個問題?我對驗證這些輸入非常新,我一直在尋找很多次,幾乎沒有答案。

編輯:

我忘了,包括我沒有找到該指南:https://docs.silverstripe.org/en/3.1/developer_guides/forms/field_types/htmleditorfield/

從我卻在這裏看到的是如何將之納入在後端(管理控制檯),我不能,雖然弄清楚如何包含這個讓我們說AboutMe頁面。所以www.mywebsite.com/AboutMe/edit/1

EDIT2:

進一步的研究使我一個解決方案,讓我showup我的網頁上TinyMCE的編輯器。我上面列出的文檔沒有說init函數缺失,我需要將它添加到頁面才能使編輯器工作。這是什麼失蹤:

<script type="text/javascript"> 

tinyMCE.init({ 
theme : "advanced", 
mode: "textareas", 
theme_advanced_toolbar_location : "top", 
theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,separator,undo,redo", 
theme_advanced_buttons2 : "forecolor", 
theme_advanced_buttons3 : "", 
height:"250px", 
width:"400px" 
}); 

</script> 

我的第二個問題,但仍然存在。我如何驗證所有進入的文本? TinyMCE會通過javascript爲我做一些驗證,但我們總能找到解決辦法。我會做什麼樣的後端(php)驗證以確保輸入的文本安全?

,我能想到的唯一的事情就是創建允許的字符的每個組合的白名單,但只是似乎有點太錯。

+0

嘗試搜索XSS注射預防。這聽起來像問題一你想要一個所見即所得的編輯器。看看ckeditor,tinymce和niceit。我不知道silverstripe是否內置了一個。 https://www.owasp.org/index。php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet – chris85

+0

@ chris85它有TinyMCE構建它是WYSIWYG編輯器,但是我找不到任何關於如何在網站前端使用它的文檔(管理控制檯之外) – Bojan

+0

我是不太熟悉silverstripe,但是如果你還沒有看到它,這似乎是有用的,https://docs.silverstripe.org/en/3.1/developer_guides/forms/field_types/htmleditorfield/。 – chris85

回答

0

有幾件事情浮現在腦海。

我知道你已經遠遠得到這個,但你可以嘗試擴大HTMLEditorField和自定義字段,你想擁有自己的TinyMCE的配置方式。

至於驗證,你可以使用你的數據對象onBeforeWrite()(或任何你保存unsanitized的HTML)來清潔輸入。可能爲此使用一個庫,或者如果您只是列入黑名單,您可以使用PHP的strip_tags function