Fossil SCM

Strengthen CSRF requirements for the skin editor.

drh 2023-09-18 14:32 csrf-defense-enhancement
Commit 6912636dc3d22cadf8b9912783e8c0335ea09f4693ae64bdfcffb82951a63f3d
1 file changed +4 -2
+4 -2
--- src/skins.c
+++ src/skins.c
@@ -840,11 +840,11 @@
840840
zTitle = mprintf("%s for Draft%d", aSkinAttr[ii].zTitle, iSkin);
841841
zBasis = PD("basis","current");
842842
zDflt = skin_file_content(zBasis, zFile);
843843
zOrig = db_get_mprintf(zDflt, "draft%d-%s",iSkin,zFile);
844844
zContent = PD(zFile,zOrig);
845
- if( P("revert")!=0 && cgi_csrf_safe(0) ){
845
+ if( P("revert")!=0 && cgi_csrf_safe(2) ){
846846
zContent = zDflt;
847847
isRevert = 1;
848848
}
849849
850850
db_begin_transaction();
@@ -857,11 +857,13 @@
857857
@ <form action="%R/setup_skinedit" method="post"><div>
858858
login_insert_csrf_secret();
859859
@ <input type='hidden' name='w' value='%d(ii)'>
860860
@ <input type='hidden' name='sk' value='%d(iSkin)'>
861861
@ <h2>Edit %s(zTitle):</h2>
862
- if( P("submit") && cgi_csrf_safe(0) && (zOrig==0 || strcmp(zOrig,zContent)!=0) ){
862
+ if( P("submit") && cgi_csrf_safe(2)
863
+ && (zOrig==0 || strcmp(zOrig,zContent)!=0)
864
+ ){
863865
db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile);
864866
}
865867
@ <textarea name="%s(zFile)" rows="10" cols="80">\
866868
@ %h(zContent)</textarea>
867869
@ <br>
868870
--- src/skins.c
+++ src/skins.c
@@ -840,11 +840,11 @@
840 zTitle = mprintf("%s for Draft%d", aSkinAttr[ii].zTitle, iSkin);
841 zBasis = PD("basis","current");
842 zDflt = skin_file_content(zBasis, zFile);
843 zOrig = db_get_mprintf(zDflt, "draft%d-%s",iSkin,zFile);
844 zContent = PD(zFile,zOrig);
845 if( P("revert")!=0 && cgi_csrf_safe(0) ){
846 zContent = zDflt;
847 isRevert = 1;
848 }
849
850 db_begin_transaction();
@@ -857,11 +857,13 @@
857 @ <form action="%R/setup_skinedit" method="post"><div>
858 login_insert_csrf_secret();
859 @ <input type='hidden' name='w' value='%d(ii)'>
860 @ <input type='hidden' name='sk' value='%d(iSkin)'>
861 @ <h2>Edit %s(zTitle):</h2>
862 if( P("submit") && cgi_csrf_safe(0) && (zOrig==0 || strcmp(zOrig,zContent)!=0) ){
 
 
863 db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile);
864 }
865 @ <textarea name="%s(zFile)" rows="10" cols="80">\
866 @ %h(zContent)</textarea>
867 @ <br>
868
--- src/skins.c
+++ src/skins.c
@@ -840,11 +840,11 @@
840 zTitle = mprintf("%s for Draft%d", aSkinAttr[ii].zTitle, iSkin);
841 zBasis = PD("basis","current");
842 zDflt = skin_file_content(zBasis, zFile);
843 zOrig = db_get_mprintf(zDflt, "draft%d-%s",iSkin,zFile);
844 zContent = PD(zFile,zOrig);
845 if( P("revert")!=0 && cgi_csrf_safe(2) ){
846 zContent = zDflt;
847 isRevert = 1;
848 }
849
850 db_begin_transaction();
@@ -857,11 +857,13 @@
857 @ <form action="%R/setup_skinedit" method="post"><div>
858 login_insert_csrf_secret();
859 @ <input type='hidden' name='w' value='%d(ii)'>
860 @ <input type='hidden' name='sk' value='%d(iSkin)'>
861 @ <h2>Edit %s(zTitle):</h2>
862 if( P("submit") && cgi_csrf_safe(2)
863 && (zOrig==0 || strcmp(zOrig,zContent)!=0)
864 ){
865 db_set_mprintf(zContent, 0, "draft%d-%s",iSkin,zFile);
866 }
867 @ <textarea name="%s(zFile)" rows="10" cols="80">\
868 @ %h(zContent)</textarea>
869 @ <br>
870

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button