Я унаследовал приложение Coldfusion. Код очень старый (вспомните дни Allaire), и я постепенно обновлял его. Недавно мы перенесли тестирование на пентрацию, которая не прошла во многих областях. В данный момент я фокусируюсь на функциональности входа в систему, а именно на том, как хранить и использовать куки. Недавно мы обновили до CF 2018 Windows.
. Сайт в настоящее время доступен только через RDS, но будет доступен через общую сеть в ближайшем будущем.
В настоящее время код устанавливает «Rememberme» повара ie onLogin следующим образом, используя кучу запутывания. Я думаю, что это было заимствовано из примера Бена Наделя: https://www.bennadel.com/blog/1213-creating-a-remember-me-login-system-in-coldfusion.htm
<cfset strRememberMe = (
CreateUUID() & ":" &
SESSION.User.ID & ":" &
SESSION.User.Name & ":" &
SESSION.User.Billing & ":" &
SESSION.User.Admin & ":" &
SESSION.User.Reversals & ":" &
CreateUUID()
) />
<cfset strRememberMe = Encrypt(
strRememberMe,
APPLICATION.EncryptionKey,
"cfmx_compat",
"hex"
) />
<cfcookie
name="RememberMe"
value="#strRememberMe#"
expires="never"
httponly="true" <!--- Set in CFAdmin so not reqd here --->
/>
Несколько разрешений пользователя включены в этот повар ie, помечая пользователя как имеющего доступ к определенным части сайта и / или выполнять определенные функции.
Я бы хотел полностью исключить ненужные данные из списка повара ie, возможно, оставив там только идентификатор пользователя. Можно проверить, возможно, в методе application.cf c onRequest (), чтобы проверить cook ie и выполнить запрос к базе данных, а затем установить переменные сеанса, связанные с разрешениями пользователя. В настоящее время application.cf c onSessionStart () анализирует пользовательские полномочия из cook ie для создания переменных области сеанса. Проблема с наличием только необработанного идентификатора пользователя в кулинарии ie заключается в том, что идентификатор пользователя может быть довольно легко угадан, поэтому, вероятно, все еще будет необходим какой-то тип запутывания или шифрования.
Из моего прочтения я понимаю, что cfmx_compat обеспечивает слабое шифрование.
Я ищу самый чистый и эффективный способ обезопасить повара ie от любого типа сторонних или MITM-атак / атак и использовать его в приложении. Я прочитал почти все в inte rnet об этом, и люди делают и предлагают разные вещи. Мой мозг перегружен идеями прямо сейчас. Я не хочу быть модным, просто эффективным.
На сайте сейчас нет SSL или TLS, но он скоро будет реализован, что должно помочь в вопросах безопасности.