WP Manifestindependent plugin directory
manifest / content / bible-for-wordpress-plugin

Bible for Wordpress WP Registry grade D+. High-severity findings · 2 findingsWP RegistryHigh-severity findings · 2 findingsOpen the reportD+

Plugin to retrive bible word or print out reference link built for Wordpress

★ 1stars
21release downloads
≈10active sites
3.1latest · 9 years ago

Install

Download bible-for-wordpress_3.1.zip From the 3.1 release on GitHub, Apr 11, 2017

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/ansidev/bible-for-wordpress-plugin/releases/download/3.1/bible-for-wordpress_3.1.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

This plugin was forked from YouVersion Wordpress Plugin.

Plugin will retrive bible word from Bible.com or print out reference link to original site.

Copyright 2010, 2012 by Dan Frist and Jesse Lang | License: GPL v3

Copyright 2016-2018 by ansidev | License: MIT

1. Plugin Name

Contributors: Dan Frist, Jesse Lang, ansidev

Tags: bible, youversion

Requires at least: 2.0

Tested up to: 4.7.3

2. Installation

Step 1: Download latest release version from https://github.com/ansidev/bible-for-wordpress-plugin/releases.

Step 2: Install plugin via Plugins > Add New > Upload Plugin.

Step 3: Activate the plugin through the Plugins menu in WordPress.

Step 4: Go to Settings > Bible for Wordpress to setting for plugin.

[Setting Menu]()

[Setting Page]()

3. Upgrade from version 2.1

You should remove old version before upgrading to version 3.1 to avoid errors.

4. Instruction

4.1 Instructions on How To Use the plugin
  1. Type the Bible Address. E.g: John 3:16. Then select them.

  2. Click Bible for Wordpress Button on the WP Editor Toolbar. You should see [bible]John 3:16[/bible]

4.2 Example:

In the text editor, type: Hi, my name is Scott and [bible]John 3:16[/bible] is my favorite verse.

When you publish the post or page, it will look like: Hi, my name is Scott and John 3:16 is my favorite verse.

Remember to spell the verse reference properly and use the commonly accepted format for Bible references (ie. John 3:16). The reference formats that work are "John 3:16" and "John 3:16-18".

References that use commas (ie. John 3:16,18) or multi-chapter spans (ie. John 3:16-4:5) will not work and will result in a link that leads to a dead page on Bible.com.

4.3 More information:

You can also use abbreviation name for book name. Ex: Gen ~ Genesis. Please view all supported name in Plugin Settings Page.

Because of many bible versions, plugins support quick search bible version you want using Select2.

If you use only specific versions, you can customize plugin for your site.

Releases

2 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
3.1 latest
Apr 11, 2017 9 years ago
bible-for-wordpress_3.1.zip
14
Jul 27, 2016 10 years ago
bible-for-wordpress_2.1.zip
7

Active-site estimate ≈10 comes from the median of recent superseded releases. Method.

D+ grade

Security

Bible for Wordpress 3.1 · audited by WP Registry

High-severity findings.

2 high
Audited release
3.1
Findings
2
Worst severity
high
Content hash
82bd65727e0a1ea1030c4530…

Findings

  • high Stored XSS via unquoted [bible] href; tabs/newlines survive space stripping

    xss_stored

    bible_generate_links (the_content, priority 10) splits on literal [bible] / [/bible], maps the inner text to an OSIS-style reference, and prints an anchor with an unquoted href: '<a target="_blank" href=' . $scripture_link . '>'. $scripture_link is 'https://www.bible.com/bible/' . $translation_id . '/' . str_replace(' ', '', $reference_link). Only U+0020 is removed; tab, LF, CR, and FF remain and are HTML5 attribute separators, so a payload such as [bible]John 3:16\tonmouseover=alert(document.domain)[/bible] becomes href=https://www.bible.com/bible/{id}/JHN.3.16 then a real onmouseover handler on that <a>. wp_kses on save does not treat that string as a tag, so Contributor/Author (no unfiltered_html) can store it. Author can publish; Contributor plants it in a pending post and XSS fires when an editor/admin uses frontend preview (the_content) or after publish. $translation_id also comes from unsanitized option BIBLE_TRANSLATION_OPTion (CSRF finding) and is interpolated the same way — a value with spaces breaks out of href on every bible tag. Link text ($row_exploded[0]) and, when bible_display_option==scripture, verses[0][content] from events.bible.com are likewise unescaped. Simulated output for the tab payload contains 0x09 immediately before onmouseover=; for a poisoned option, href=https://www.bible.com/bible/1 onmouseover=alert(1) x=/JHN.3.16.

    bible_for_wordpress.php:60-96,290

    Recommendation

    Quote and escape the URL with esc_url() (or build via add_query_arg and printf with %s). Escape link text with esc_html(). Allowlist translation IDs as digits (or the API abbreviation list) and strip all Unicode/HTML whitespace from the reference, not only ASCII spaces. Prefer add_shortcode('bible', …) over raw the_content explosion. Run API verse HTML through wp_kses_post() before echoing. Sanitize BIBLE_TRANSLATION_OPTion with absint/sanitize_text_field on save.

  • high CSRF on Bible settings writes unsanitized translation ID used in frontend href

    csrf

    bible_config() is the manage_options submenu callback. At the top of the function, isset($_POST[BIBLE_TRANSLATION_OPTion]) / isset($_POST[bible_display_option]) immediately update_option/add_option the raw POST values with no check_admin_referer, wp_verify_nonce, or sanitize_*. The settings <form action="" method="post"> has no nonce field. WordPress will run this callback for any administrator who can load options-general.php?page=bible-for-wordpress, so a cross-site POST (or same-site CSRF) sets BIBLE_TRANSLATION_OPTion to an arbitrary string such as '1 onmouseover=alert(1) x='. That option is later concatenated into the unquoted front-end href in bible_generate_links (finding 1), turning every existing [bible] tag into stored XSS for all visitors. bible_display_option is only compared to 'scripture' (limited blast by itself) but is written on the same request. Capability is the menu cap only; there is no current_user_can inside the POST branch.

    bible_for_wordpress.php:133-144,162-207,282-286

    Recommendation

    Switch to the Settings API (register_setting + options.php) or call check_admin_referer() and current_user_can('manage_options') before any update_option. Add wp_nonce_field to the form. Save translation as absint (bible.com version id) and display type as an allowlist of link|scripture. Do not persist raw $_POST into options that the_content later concatenates into HTML.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.