2018-10-19 00:39:30 +03:00
|
|
|
cabal-version: 1.12
|
|
|
|
|
2023-10-23 12:29:53 +03:00
|
|
|
-- This file has been generated from package.yaml by hpack version 0.36.0.
|
2015-08-13 08:45:08 +03:00
|
|
|
--
|
|
|
|
-- see: https://github.com/sol/hpack
|
|
|
|
|
2010-09-10 02:54:34 +04:00
|
|
|
name: hledger-web
|
2023-12-02 22:09:07 +03:00
|
|
|
version: 1.32.99
|
2023-09-21 09:41:22 +03:00
|
|
|
synopsis: Web user interface for the hledger accounting system
|
|
|
|
description: A simple web user interface for the hledger accounting system,
|
2020-03-22 20:49:49 +03:00
|
|
|
providing a more modern UI than the command-line or terminal interfaces.
|
|
|
|
It can be used as a local single-user UI, or as a multi-user UI for
|
2020-10-22 08:06:35 +03:00
|
|
|
viewing\/adding\/editing on the web.
|
2016-08-09 21:27:00 +03:00
|
|
|
.
|
2020-03-22 20:49:49 +03:00
|
|
|
hledger is a robust, cross-platform set of tools for tracking money,
|
|
|
|
time, or any other commodity, using double-entry accounting and a
|
|
|
|
simple, editable file format, with command-line, terminal and web
|
|
|
|
interfaces. It is a Haskell rewrite of Ledger, and one of the leading
|
|
|
|
implementations of Plain Text Accounting. Read more at:
|
|
|
|
<https://hledger.org>
|
2017-01-17 01:23:47 +03:00
|
|
|
category: Finance
|
|
|
|
stability: stable
|
2010-09-10 02:54:34 +04:00
|
|
|
homepage: http://hledger.org
|
2015-10-30 23:08:03 +03:00
|
|
|
bug-reports: http://bugs.hledger.org
|
2017-01-17 01:23:47 +03:00
|
|
|
author: Simon Michael <simon@joyful.com>
|
|
|
|
maintainer: Simon Michael <simon@joyful.com>
|
2017-03-08 11:19:13 +03:00
|
|
|
license: GPL-3
|
2017-01-17 01:23:47 +03:00
|
|
|
license-file: LICENSE
|
|
|
|
build-type: Simple
|
2021-05-15 05:14:06 +03:00
|
|
|
tested-with:
|
2023-07-01 21:13:29 +03:00
|
|
|
GHC==8.10.7, GHC==9.0.2, GHC==9.2.8, GHC==9.4.5
|
2010-09-10 02:54:34 +04:00
|
|
|
extra-source-files:
|
2019-01-26 05:33:26 +03:00
|
|
|
CHANGES.md
|
2020-03-22 19:08:29 +03:00
|
|
|
README.md
|
2017-01-17 01:23:47 +03:00
|
|
|
config/favicon.ico
|
|
|
|
config/keter.yaml
|
|
|
|
config/robots.txt
|
|
|
|
config/routes
|
|
|
|
config/settings.yml
|
2017-12-23 16:03:14 +03:00
|
|
|
static/css/bootstrap-datepicker.standalone.min.css
|
2017-01-17 01:23:47 +03:00
|
|
|
static/css/bootstrap-theme.css
|
|
|
|
static/css/bootstrap-theme.min.css
|
|
|
|
static/css/bootstrap.css
|
|
|
|
static/css/bootstrap.min.css
|
2018-10-19 00:39:30 +03:00
|
|
|
static/css/bootstrap-theme.css.map
|
|
|
|
static/css/bootstrap.css.map
|
2017-01-17 01:23:47 +03:00
|
|
|
static/fonts/glyphicons-halflings-regular.eot
|
|
|
|
static/fonts/glyphicons-halflings-regular.svg
|
|
|
|
static/fonts/glyphicons-halflings-regular.ttf
|
|
|
|
static/fonts/glyphicons-halflings-regular.woff
|
|
|
|
static/hledger.css
|
|
|
|
static/hledger.js
|
2017-12-23 16:03:14 +03:00
|
|
|
static/js/bootstrap-datepicker.min.js
|
2017-01-17 01:23:47 +03:00
|
|
|
static/js/bootstrap.js
|
|
|
|
static/js/bootstrap.min.js
|
|
|
|
static/js/excanvas.js
|
|
|
|
static/js/excanvas.min.js
|
|
|
|
static/js/jquery.cookie.js
|
|
|
|
static/js/jquery.flot.canvas.js
|
|
|
|
static/js/jquery.flot.canvas.min.js
|
|
|
|
static/js/jquery.flot.categories.js
|
|
|
|
static/js/jquery.flot.categories.min.js
|
|
|
|
static/js/jquery.flot.crosshair.js
|
|
|
|
static/js/jquery.flot.crosshair.min.js
|
|
|
|
static/js/jquery.flot.errorbars.js
|
|
|
|
static/js/jquery.flot.errorbars.min.js
|
|
|
|
static/js/jquery.flot.fillbetween.js
|
|
|
|
static/js/jquery.flot.fillbetween.min.js
|
|
|
|
static/js/jquery.flot.image.js
|
|
|
|
static/js/jquery.flot.image.min.js
|
|
|
|
static/js/jquery.flot.js
|
|
|
|
static/js/jquery.flot.min.js
|
|
|
|
static/js/jquery.flot.navigate.js
|
|
|
|
static/js/jquery.flot.navigate.min.js
|
|
|
|
static/js/jquery.flot.pie.js
|
|
|
|
static/js/jquery.flot.pie.min.js
|
|
|
|
static/js/jquery.flot.resize.js
|
|
|
|
static/js/jquery.flot.resize.min.js
|
|
|
|
static/js/jquery.flot.selection.js
|
|
|
|
static/js/jquery.flot.selection.min.js
|
|
|
|
static/js/jquery.flot.stack.js
|
|
|
|
static/js/jquery.flot.stack.min.js
|
|
|
|
static/js/jquery.flot.symbol.js
|
|
|
|
static/js/jquery.flot.symbol.min.js
|
|
|
|
static/js/jquery.flot.threshold.js
|
|
|
|
static/js/jquery.flot.threshold.min.js
|
|
|
|
static/js/jquery.flot.time.js
|
|
|
|
static/js/jquery.flot.time.min.js
|
|
|
|
static/js/jquery.flot.tooltip.js
|
|
|
|
static/js/jquery.flot.tooltip.min.js
|
|
|
|
static/js/jquery.hotkeys.js
|
|
|
|
static/js/jquery.js
|
|
|
|
static/js/jquery.min.js
|
|
|
|
static/js/jquery.url.js
|
|
|
|
static/js/typeahead.bundle.js
|
|
|
|
static/js/typeahead.bundle.min.js
|
2018-06-17 02:04:13 +03:00
|
|
|
templates/add-form.hamlet
|
2018-06-18 12:23:44 +03:00
|
|
|
templates/balance-report.hamlet
|
2018-06-17 02:04:13 +03:00
|
|
|
templates/chart.hamlet
|
2017-01-17 01:23:47 +03:00
|
|
|
templates/default-layout-wrapper.hamlet
|
|
|
|
templates/default-layout.hamlet
|
2018-06-17 02:04:13 +03:00
|
|
|
templates/edit-form.hamlet
|
|
|
|
templates/journal.hamlet
|
|
|
|
templates/manage.hamlet
|
|
|
|
templates/register.hamlet
|
|
|
|
templates/upload-form.hamlet
|
2018-10-19 00:39:30 +03:00
|
|
|
hledger-web.1
|
|
|
|
hledger-web.txt
|
|
|
|
hledger-web.info
|
2016-04-20 22:44:47 +03:00
|
|
|
|
2010-09-10 02:54:34 +04:00
|
|
|
source-repository head
|
2017-01-17 01:23:47 +03:00
|
|
|
type: git
|
|
|
|
location: https://github.com/simonmichael/hledger
|
2011-10-05 03:02:57 +04:00
|
|
|
|
2012-03-05 11:52:36 +04:00
|
|
|
flag dev
|
2017-01-17 01:23:47 +03:00
|
|
|
description: Turn on development settings, like auto-reload templates.
|
|
|
|
manual: False
|
|
|
|
default: False
|
2012-03-05 11:52:36 +04:00
|
|
|
|
|
|
|
flag library-only
|
2017-01-17 01:23:47 +03:00
|
|
|
description: Build for use with "yesod devel"
|
|
|
|
manual: False
|
|
|
|
default: False
|
2011-05-24 08:27:37 +04:00
|
|
|
|
2016-08-09 17:24:41 +03:00
|
|
|
flag threaded
|
2017-01-17 01:23:47 +03:00
|
|
|
description: Build with support for multithreaded execution.
|
|
|
|
manual: False
|
|
|
|
default: True
|
2014-10-19 20:37:18 +04:00
|
|
|
|
2012-03-05 11:52:36 +04:00
|
|
|
library
|
2018-04-22 20:12:17 +03:00
|
|
|
exposed-modules:
|
|
|
|
Hledger.Web
|
2023-09-21 09:41:22 +03:00
|
|
|
Hledger.Web.Main
|
|
|
|
Hledger.Web.WebOptions
|
2018-06-18 12:23:44 +03:00
|
|
|
Hledger.Web.Application
|
2023-09-21 09:41:22 +03:00
|
|
|
Hledger.Web.Import
|
|
|
|
Hledger.Web.Test
|
|
|
|
other-modules:
|
2018-06-18 12:23:44 +03:00
|
|
|
Hledger.Web.Foundation
|
|
|
|
Hledger.Web.Handler.AddR
|
|
|
|
Hledger.Web.Handler.EditR
|
|
|
|
Hledger.Web.Handler.JournalR
|
2019-02-19 10:57:58 +03:00
|
|
|
Hledger.Web.Handler.MiscR
|
2018-06-18 12:23:44 +03:00
|
|
|
Hledger.Web.Handler.RegisterR
|
|
|
|
Hledger.Web.Handler.UploadR
|
|
|
|
Hledger.Web.Settings
|
|
|
|
Hledger.Web.Settings.StaticFiles
|
|
|
|
Hledger.Web.Widget.AddForm
|
|
|
|
Hledger.Web.Widget.Common
|
2023-11-07 20:07:08 +03:00
|
|
|
Paths_hledger_web
|
2018-10-09 20:15:33 +03:00
|
|
|
hs-source-dirs:
|
2021-05-15 05:14:06 +03:00
|
|
|
./
|
2022-03-26 21:11:52 +03:00
|
|
|
ghc-options: -Wall -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns
|
2023-12-02 22:09:07 +03:00
|
|
|
cpp-options: -DVERSION="1.32.99"
|
2017-01-17 01:23:47 +03:00
|
|
|
build-depends:
|
2020-03-19 20:10:55 +03:00
|
|
|
Decimal >=0.5.1
|
2023-07-01 21:13:29 +03:00
|
|
|
, aeson >=1 && <2.3
|
2023-03-16 09:43:03 +03:00
|
|
|
, base >=4.14 && <4.19
|
fix: web: b64 encode user controlled input (#1525)
This fixes a reported Stored XSS vulnerability in toBloodhoundJson by
encoding the user-controlled values in this payload into base64 and
parsing them with atob.
In my exploration of the vulnerability with various payloads I and
others crafted, it would appear that this is the only available XSS in
hledger-web in relation to stored accounts and transaction details. If
there is other parts of the UI which may contain user-controlled data,
they should be examined for similar things. In this instance,
protections provided by yesod and other libraries worked fine, but in a
bit of code that hledger-web was generating, the user could insert a
</Script> tag (which is valid HTML and equivalent to </script> but not
caught by the T.Replace that existed in toBloodhoundJson) in order to
switch out of a script context, allowing the parser to be reset, and for
arbitrary JavaScript to run.
The real fix is a bit more involved, but produces much better results:
Content-Security-Policy headers should be introduced, and using
sha256-<hash of script> or a different algorithm, they should be marked
as trusted in the header. This way, if the (in-browser) parser and
hledger-web generator disagree on the source code of the script, the
script won't run. Note that this would still be susceptible to attacks
that involve changing the script by escaping from the string inside it
or something similar to that, which can be avoided additionally by using
either the method used in this commit, or a proper JSON encoder.
The second approach has the advantage of preventing further XSS, to the
extent specified above, in practice, a combination of both should be
used, b64 for embedded data and the CSP sha256-hash script-src over
everything else, which will eliminate all injected or malformed script
blocks (via CSP), in combination with eliminating any HTML closing tags
which might occur in stored data (via b64).
This vulnerability appears to have been first introduced when
autocompletion was added in hledger-web, git tag hledger-0.24, commit
hash: ec51d28839b2910eea360b1b8c72904b51cf7821
Test payload: </Script><svg onload=alert(1)//>
Closes #1525
2021-08-22 14:58:46 +03:00
|
|
|
, base64
|
2017-01-17 01:23:47 +03:00
|
|
|
, blaze-html
|
|
|
|
, blaze-markup
|
|
|
|
, bytestring
|
2018-06-18 00:53:24 +03:00
|
|
|
, case-insensitive
|
2017-01-17 01:23:47 +03:00
|
|
|
, clientsession
|
2017-12-31 21:03:50 +03:00
|
|
|
, cmdargs >=0.10
|
2018-06-17 02:04:13 +03:00
|
|
|
, conduit
|
2017-12-07 22:46:33 +03:00
|
|
|
, conduit-extra >=1.1
|
2021-03-29 18:19:54 +03:00
|
|
|
, containers >=0.5.9
|
2017-01-17 01:23:47 +03:00
|
|
|
, data-default
|
2020-09-12 02:59:53 +03:00
|
|
|
, directory >=1.2.3.0
|
2020-01-04 09:09:01 +03:00
|
|
|
, extra >=1.6.3
|
2017-01-17 01:23:47 +03:00
|
|
|
, filepath
|
|
|
|
, hjsmin
|
2023-12-02 22:09:07 +03:00
|
|
|
, hledger >=1.32.99 && <1.33
|
|
|
|
, hledger-lib >=1.32.99 && <1.33
|
2020-11-17 00:58:48 +03:00
|
|
|
, hspec
|
2017-01-17 01:23:47 +03:00
|
|
|
, http-client
|
2017-12-07 22:46:33 +03:00
|
|
|
, http-conduit
|
2019-02-21 04:39:35 +03:00
|
|
|
, http-types
|
2023-12-14 21:58:02 +03:00
|
|
|
, megaparsec >=7.0.0 && <9.7
|
2019-12-02 19:23:00 +03:00
|
|
|
, mtl >=2.2.1
|
2019-07-18 02:58:33 +03:00
|
|
|
, network
|
2023-10-23 12:29:53 +03:00
|
|
|
, safe >=0.3.19
|
2017-12-31 21:03:50 +03:00
|
|
|
, shakespeare >=2.0.2.2
|
2017-01-17 01:23:47 +03:00
|
|
|
, template-haskell
|
2023-11-23 11:55:47 +03:00
|
|
|
, text >=1.2.4.1
|
2017-08-26 02:56:41 +03:00
|
|
|
, time >=1.5
|
2017-01-17 01:23:47 +03:00
|
|
|
, transformers
|
2019-07-18 02:58:33 +03:00
|
|
|
, unix-compat
|
2020-05-25 11:06:20 +03:00
|
|
|
, unordered-containers
|
2019-10-07 12:29:06 +03:00
|
|
|
, utf8-string
|
2017-01-17 01:23:47 +03:00
|
|
|
, wai
|
2019-09-28 13:35:40 +03:00
|
|
|
, wai-cors
|
2017-01-17 01:23:47 +03:00
|
|
|
, wai-extra
|
2020-01-15 00:18:05 +03:00
|
|
|
, wai-handler-launch >=3.0.3
|
2017-01-17 01:23:47 +03:00
|
|
|
, warp
|
|
|
|
, yaml
|
2019-11-29 01:58:32 +03:00
|
|
|
, yesod >=1.4 && <1.7
|
|
|
|
, yesod-core >=1.4 && <1.7
|
2021-04-23 20:20:25 +03:00
|
|
|
, yesod-form >=1.4 && <1.8
|
2019-11-29 01:58:32 +03:00
|
|
|
, yesod-static >=1.4 && <1.7
|
2020-11-17 00:58:48 +03:00
|
|
|
, yesod-test
|
2022-09-20 07:23:16 +03:00
|
|
|
default-language: Haskell2010
|
2018-10-19 00:39:30 +03:00
|
|
|
if (flag(dev)) || (flag(library-only))
|
|
|
|
cpp-options: -DDEVELOPMENT
|
|
|
|
if flag(dev)
|
|
|
|
ghc-options: -O0
|
2013-04-22 18:34:33 +04:00
|
|
|
|
2015-08-13 08:45:08 +03:00
|
|
|
executable hledger-web
|
2017-01-17 01:23:47 +03:00
|
|
|
main-is: main.hs
|
2018-04-22 20:12:17 +03:00
|
|
|
other-modules:
|
|
|
|
Paths_hledger_web
|
2017-01-17 01:23:47 +03:00
|
|
|
hs-source-dirs:
|
|
|
|
app
|
2022-03-26 21:11:52 +03:00
|
|
|
ghc-options: -Wall -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns
|
2023-12-02 22:09:07 +03:00
|
|
|
cpp-options: -DVERSION="1.32.99"
|
2017-01-17 01:23:47 +03:00
|
|
|
build-depends:
|
2023-03-16 09:43:03 +03:00
|
|
|
base >=4.14 && <4.19
|
2018-06-25 13:00:18 +03:00
|
|
|
, hledger-web
|
2022-09-20 07:23:16 +03:00
|
|
|
default-language: Haskell2010
|
2018-10-19 00:39:30 +03:00
|
|
|
if (flag(dev)) || (flag(library-only))
|
|
|
|
cpp-options: -DDEVELOPMENT
|
|
|
|
if flag(dev)
|
|
|
|
ghc-options: -O0
|
|
|
|
if flag(library-only)
|
|
|
|
buildable: False
|
|
|
|
if flag(threaded)
|
|
|
|
ghc-options: -threaded
|
2020-11-13 05:09:02 +03:00
|
|
|
|
|
|
|
test-suite test
|
|
|
|
type: exitcode-stdio-1.0
|
|
|
|
main-is: test.hs
|
|
|
|
hs-source-dirs:
|
|
|
|
test
|
2022-03-26 21:11:52 +03:00
|
|
|
ghc-options: -Wall -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns
|
2023-12-02 22:09:07 +03:00
|
|
|
cpp-options: -DVERSION="1.32.99"
|
2020-11-13 05:09:02 +03:00
|
|
|
build-depends:
|
2023-03-16 09:43:03 +03:00
|
|
|
base >=4.14 && <4.19
|
2020-11-13 05:09:02 +03:00
|
|
|
, hledger-web
|
2022-09-20 07:23:16 +03:00
|
|
|
default-language: Haskell2010
|
2020-11-13 05:09:02 +03:00
|
|
|
if (flag(dev)) || (flag(library-only))
|
|
|
|
cpp-options: -DDEVELOPMENT
|
|
|
|
if flag(dev)
|
|
|
|
ghc-options: -O0
|