瀏覽代碼

fix: prevent malformed paths for pages (#4533)

* First take on removing erroneous path characters

Paths should not accept trailing slashes or hashtags. This is a first attempt at nullifying those.

* Use rules to verify path before acceptance

Use Regex and rules to verify paths before acceptance

* Rules to prevent any leading or trailing slashes

* Complex slug for regex on path, but it elminates special chars

* Added yarn.lock to .gitignore

* Maybe we do want yarn.lock afterall

* Adding yarn.lock

* Move Regex pattern outside of export
broxen 3 年之前
父節點
當前提交
813df21020
共有 1 個文件被更改,包括 9 次插入1 次删除
  1. 9 1
      client/components/editor/editor-modal-properties.vue

+ 9 - 1
client/components/editor/editor-modal-properties.vue

@@ -64,6 +64,7 @@
                     :hint='$t(`editor:props.pathHint`)'
                     persistent-hint
                     @click:append='showPathSelector'
+                    :rules='[rules.required, rules.path]'
                     )
           v-divider
           v-card-text.grey.pt-5(:class='$vuetify.theme.dark ? `darken-3-d5` : `lighten-4`')
@@ -254,6 +255,7 @@ import 'codemirror/mode/htmlmixed/htmlmixed.js'
 import 'codemirror/mode/css/css.js'
 
 /* global siteLangs, siteConfig */
+const filenamePattern = /^(?![\#\/\.\$\^\=\*\;\:\&\?\(\)\[\]\{\}\"\'\>\<\,\@\!\%\`\~\s])(?!.*[\#\/\.\$\^\=\*\;\:\&\?\(\)\[\]\{\}\"\'\>\<\,\@\!\%\`\~\s]$)[^\#\.\$\^\=\*\;\:\&\?\(\)\[\]\{\}\"\'\>\<\,\@\!\%\`\~\s]*$/
 
 export default {
   props: {
@@ -272,7 +274,13 @@ export default {
       newTagSuggestions: [],
       newTagSearch: '',
       currentTab: 0,
-      cm: null
+      cm: null,
+      rules: {
+          required: value => !!value || 'This field is required.',
+          path: value => {
+            return filenamePattern.test(value) || 'Invalid path. Please ensure it does not contain special characters, or begin/end in a slash or hashtag string.'
+          }
+      }
     }
   },
   computed: {