Fix course access to files, blocking using api_protect_course_script()

- format code + add "int" casting
pull/3173/head
Julio Montoya 7 years ago
parent ca40a3341c
commit 49fd40eedb
  1. 9
      main/badge/class.php
  2. 39
      main/badge/criteria.php
  3. 2
      main/blog/blog.php
  4. 9
      main/calendar/download.php
  5. 2
      main/exercise/adminhp.php
  6. 3
      main/exercise/aiken.php
  7. 3
      main/exercise/hotpotatoes.php
  8. 5
      main/exercise/hotspot_actionscript.as.php
  9. 2
      main/exercise/hotspot_save.inc.php
  10. 2
      main/exercise/qti2.php
  11. 2
      main/exercise/question_pool.php
  12. 2
      main/exercise/recalculate.php
  13. 3
      main/exercise/savescores.php
  14. 3
      main/exercise/showinframes.php
  15. 3
      main/exercise/tests_category.php
  16. 2
      main/exercise/upload_exercise.php
  17. 2
      main/glossary/glossary_ajax_request.php
  18. 5
      main/inc/lib/timeline.lib.php
  19. 20
      main/link/link_goto.php
  20. 2
      main/lp/embed.php
  21. 2
      main/lp/lp_ajax_initialize.php
  22. 2
      main/lp/lp_ajax_save_item.php
  23. 7
      main/messages/download.php
  24. 10
      main/search/search_suggestions.php
  25. 5
      main/session/add_edit_users_to_session.php
  26. 2
      main/session/add_teachers_to_session.php
  27. 2
      main/session/add_users_to_session.php
  28. 2
      main/session/add_users_to_session_course.php
  29. 2
      main/session/index.php
  30. 2
      main/session/session_course_edit.php
  31. 2
      main/session/session_course_list.php
  32. 5
      main/session/session_course_user.php
  33. 2
      main/session/session_course_user_list.php
  34. 1
      main/session/session_export.php
  35. 4
      main/timeline/index.php
  36. 3
      main/work/edit_work.php

@ -13,14 +13,17 @@ require_once __DIR__.'/../inc/global.inc.php';
$skillId = isset($_GET['id']) ? (int) $_GET['id'] : 0; $skillId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
$objSkill = new Skill(); $objSkill = new Skill();
$skill = $objSkill->get($skillId); $skill = $objSkill->get($skillId);
$json = [];
$json = [ if ($skill) {
$json = [
'name' => $skill['name'], 'name' => $skill['name'],
'description' => $skill['description'], 'description' => $skill['description'],
'image' => api_get_path(WEB_UPLOAD_PATH)."badges/{$skill['icon']}", 'image' => api_get_path(WEB_UPLOAD_PATH)."badges/{$skill['icon']}",
'criteria' => api_get_path(WEB_CODE_PATH)."badge/criteria.php?id=$skillId", 'criteria' => api_get_path(WEB_CODE_PATH)."badge/criteria.php?id=$skillId",
'issuer' => api_get_path(WEB_CODE_PATH)."badge/issuer.php", 'issuer' => api_get_path(WEB_CODE_PATH).'badge/issuer.php',
]; ];
}
header('Content-Type: application/json'); header('Content-Type: application/json');

@ -10,33 +10,40 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$entityManager = Database::getManager(); $skillId = isset($_GET['id']) ? $_GET['id'] : 0;
/** @var \Chamilo\CoreBundle\Entity\Skill $skill */
$skill = $entityManager->find('ChamiloCoreBundle:Skill', $_GET['id']);
if (!$skill) {
Display::addFlash(
Display::return_message(get_lang('SkillNotFound'), 'error')
);
header('Location: '.api_get_path(WEB_PATH)); if (empty($skillId)) {
exit; exit;
} }
$skillInfo = [ $entityManager = Database::getManager();
/** @var \Chamilo\CoreBundle\Entity\Skill $skill */
$skill = $entityManager->find('ChamiloCoreBundle:Skill', $_GET['id']);
if ($skill) {
$skillInfo = [
'name' => $skill->getName(), 'name' => $skill->getName(),
'short_code' => $skill->getShortCode(), 'short_code' => $skill->getShortCode(),
'description' => $skill->getDescription(), 'description' => $skill->getDescription(),
'criteria' => $skill->getCriteria(), 'criteria' => $skill->getCriteria(),
'badge_image' => Skill::getWebIconPath($skill), 'badge_image' => Skill::getWebIconPath($skill),
]; ];
$template = new Template(); $template = new Template();
$template->assign('skill_info', $skillInfo); $template->assign('skill_info', $skillInfo);
$content = $template->fetch( $content = $template->fetch(
$template->get_template('skill/criteria.tpl') $template->get_template('skill/criteria.tpl')
);
$template->assign('content', $content);
$template->display_one_col_template();
exit;
}
Display::addFlash(
Display::return_message(get_lang('SkillNotFound'), 'error')
); );
$template->assign('content', $content); header('Location: '.api_get_path(WEB_PATH));
$template->display_one_col_template(); exit;

@ -8,7 +8,7 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$blog_id = intval($_GET['blog_id']); $blog_id = isset($_GET['blog_id']) ? $_GET['blog_id'] : 0;
if (empty($blog_id)) { if (empty($blog_id)) {
api_not_allowed(true); api_not_allowed(true);

@ -19,11 +19,9 @@ header('Expires: Wed, 01 Jan 1990 00:00:00 GMT');
header('Cache-Control: public'); header('Cache-Control: public');
header('Pragma: no-cache'); header('Pragma: no-cache');
$course_id = intval($_REQUEST['course_id']); $course_id = isset($_REQUEST['course_id']) ? $_REQUEST['course_id'] : 0;
$user_id = api_get_user_id(); $user_id = api_get_user_id();
$course_info = api_get_course_info_by_id($course_id); $course_info = api_get_course_info_by_id($course_id);
$doc_url = $_REQUEST['file'];
$session_id = api_get_session_id();
if (empty($course_id)) { if (empty($course_id)) {
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
@ -32,6 +30,11 @@ if (empty($course_id) || empty($doc_url)) {
api_not_allowed(); api_not_allowed();
} }
$doc_url = $_REQUEST['file'];
$session_id = api_get_session_id();
$is_user_is_subscribed = CourseManager::is_user_subscribed_in_course( $is_user_is_subscribed = CourseManager::is_user_subscribed_in_course(
$user_id, $user_id,
$course_info['code'], $course_info['code'],

@ -12,6 +12,8 @@ require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
api_protect_course_script(true);
$_course = api_get_course_info(); $_course = api_get_course_info();
if (isset($_REQUEST["cancel"])) { if (isset($_REQUEST["cancel"])) {

@ -10,6 +10,9 @@
* @author César Perales <cesar.perales@gmail.com> Updated function names and import files for Aiken format support * @author César Perales <cesar.perales@gmail.com> Updated function names and import files for Aiken format support
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$lib_path = api_get_path(LIBRARY_PATH); $lib_path = api_get_path(LIBRARY_PATH);
$main_path = api_get_path(SYS_CODE_PATH); $main_path = api_get_path(SYS_CODE_PATH);

@ -9,6 +9,9 @@
* @author Istvan Mandak (original author) * @author Istvan Mandak (original author)
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
require_once 'hotpotatoes.lib.php'; require_once 'hotpotatoes.lib.php';
// Section (for the tabs). // Section (for the tabs).

@ -12,9 +12,12 @@ use ChamiloSession as Session;
* *
* @version $Id: admin.php 10680 2007-01-11 21:26:23Z pcool $ * @version $Id: admin.php 10680 2007-01-11 21:26:23Z pcool $
*/ */
session_cache_limiter("none"); session_cache_limiter('none');
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
require api_get_path(LIBRARY_PATH).'geometry.lib.php'; require api_get_path(LIBRARY_PATH).'geometry.lib.php';
// set vars // set vars

@ -10,6 +10,8 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER); $TBL_ANSWER = Database::get_course_table(TABLE_QUIZ_ANSWER);
$questionId = intval($_GET['questionId']); $questionId = intval($_GET['questionId']);
$answerId = intval($_GET['answerId']); $answerId = intval($_GET['answerId']);

@ -12,6 +12,8 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
// section (for the tabs) // section (for the tabs)
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;

@ -17,6 +17,8 @@ use Knp\Component\Pager\Paginator;
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
$is_allowedToEdit = api_is_allowed_to_edit(null, true); $is_allowedToEdit = api_is_allowed_to_edit(null, true);

@ -5,6 +5,8 @@ use Chamilo\CoreBundle\Entity\TrackEExercises;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$isAllowedToEdit = api_is_allowed_to_edit(true, true); $isAllowedToEdit = api_is_allowed_to_edit(true, true);
if (!$isAllowedToEdit) { if (!$isAllowedToEdit) {

@ -7,6 +7,9 @@
* @package chamilo.exercise * @package chamilo.exercise
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$courseInfo = api_get_course_info(); $courseInfo = api_get_course_info();
$_user = api_get_user_info(); $_user = api_get_user_info();

@ -9,6 +9,9 @@
* @author Istvan Mandak * @author Istvan Mandak
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
require_once api_get_path(SYS_CODE_PATH).'exercise/hotpotatoes.lib.php'; require_once api_get_path(SYS_CODE_PATH).'exercise/hotpotatoes.lib.php';
$_course = api_get_course_info(); $_course = api_get_course_info();

@ -25,9 +25,12 @@ require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
api_protect_course_script(true);
if (!api_is_allowed_to_edit()) { if (!api_is_allowed_to_edit()) {
api_not_allowed(true); api_not_allowed(true);
} }
$category = new TestCategory(); $category = new TestCategory();
$courseId = api_get_course_int_id(); $courseId = api_get_course_int_id();
$sessionId = api_get_session_id(); $sessionId = api_get_session_id();

@ -14,6 +14,8 @@ $help_content = 'exercise_upload';
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$is_allowed_to_edit = api_is_allowed_to_edit(null, true); $is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$debug = false; $debug = false;
$origin = api_get_origin(); $origin = api_get_origin();

@ -9,6 +9,8 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
/** /**
* Search a term and return description from a glossary. * Search a term and return description from a glossary.
*/ */

@ -219,15 +219,16 @@ class Timeline extends Model
/** /**
* @param array $params * @param array $params
* @param bool $showQuery
* *
* @return bool * @return bool
*/ */
public function save($params) public function save($params, $showQuery = false)
{ {
$params['c_id'] = api_get_course_int_id(); $params['c_id'] = api_get_course_int_id();
$params['parent_id'] = '0'; $params['parent_id'] = '0';
$params['type'] = 'default'; $params['type'] = 'default';
$id = parent::save($params); $id = parent::save($params, $showQuery);
if (!empty($id)) { if (!empty($id)) {
//event_system(LOG_CAREER_CREATE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id()); //event_system(LOG_CAREER_CREATE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id());
} }

@ -19,15 +19,17 @@
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
$linkId = intval($_GET['link_id']); $linkId = isset($_GET['link_id']) ? $_GET['link_id'] : 0;
$linkInfo = Link::getLinkInfo($linkId); $linkInfo = Link::getLinkInfo($linkId);
$linkUrl = html_entity_decode(Security::remove_XSS($linkInfo['url'])); if ($linkInfo) {
// Launch event $linkUrl = html_entity_decode(Security::remove_XSS($linkInfo['url']));
Event::event_link($linkId); // Launch event
Event::event_link($linkId);
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false); header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0 header("Pragma: no-cache"); // HTTP/1.0
header("Location: $linkUrl"); header("Location: $linkUrl");
exit; exit;
}

@ -5,6 +5,8 @@ use ChamiloSession as Session;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$type = $_REQUEST['type']; $type = $_REQUEST['type'];
$src = Security::remove_XSS($_REQUEST['source']); $src = Security::remove_XSS($_REQUEST['source']);
if (empty($type) || empty($src)) { if (empty($type) || empty($src)) {

@ -15,6 +15,8 @@
$use_anonymous = true; $use_anonymous = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script();
/** /**
* Get one item's details. * Get one item's details.
* *

@ -16,6 +16,8 @@ use ChamiloSession as Session;
$use_anonymous = true; $use_anonymous = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script();
/** /**
* Writes an item's new values into the database and returns the operation result. * Writes an item's new values into the database and returns the operation result.
* *

@ -13,12 +13,17 @@ session_cache_limiter('public');
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$file_url = isset($_GET['file']) ? $_GET['file'] : '';
if (empty($file_url)) {
api_not_allowed();
}
// IMPORTANT to avoid caching of documents // IMPORTANT to avoid caching of documents
header('Expires: Wed, 01 Jan 1990 00:00:00 GMT'); header('Expires: Wed, 01 Jan 1990 00:00:00 GMT');
header('Cache-Control: public'); header('Cache-Control: public');
header('Pragma: no-cache'); header('Pragma: no-cache');
$file_url = $_GET['file'];
//change the '&' that got rewritten to '///' by mod_rewrite back to '&' //change the '&' that got rewritten to '///' by mod_rewrite back to '&'
$file_url = str_replace('///', '&', $file_url); $file_url = str_replace('///', '&', $file_url);
//still a space present? it must be a '+' (that got replaced by mod_rewrite) //still a space present? it must be a '+' (that got replaced by mod_rewrite)

@ -115,9 +115,11 @@ function get_suggestions_from_search_engine($q)
echo json_encode($json); echo json_encode($json);
} }
$q = strtolower($_GET["term"]); if (isset($_GET['term'])) {
if (!$q) { $q = strtolower($_GET['term']);
if (!$q) {
return; return;
}
get_suggestions_from_search_engine($q);
} }
//echo $q . "| value\n";
get_suggestions_from_search_engine($q);

@ -15,7 +15,10 @@ $xajax->registerFunction('search_users');
// setting the section (for the tabs) // setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$id_session = intval($_GET['id_session']); $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
if (empty($id_session)) {
api_not_allowed(true);
}
$addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; $addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
SessionManager::protectSession($id_session); SessionManager::protectSession($id_session);

@ -24,7 +24,7 @@ $tool_name = get_lang('EnrollTrainersFromExistingSessions');
$form_sent = 0; $form_sent = 0;
$errorMsg = ''; $errorMsg = '';
$id = intval($_GET['id']); $id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
SessionManager::protectSession($id); SessionManager::protectSession($id);

@ -15,7 +15,7 @@ $xajax->registerFunction('search_users');
// setting the section (for the tabs) // setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$id_session = intval($_GET['id_session']); $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
$addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null; $addProcess = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
SessionManager::protectSession($id_session); SessionManager::protectSession($id_session);

@ -15,7 +15,7 @@ $xajax->registerFunction('search_users');
// setting the section (for the tabs) // setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$id_session = (int) $_GET['id_session']; $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
$courseId = isset($_GET['course_id']) ? (int) $_GET['course_id'] : 0; $courseId = isset($_GET['course_id']) ? (int) $_GET['course_id'] : 0;
if (empty($id_session) || empty($courseId)) { if (empty($id_session) || empty($courseId)) {

@ -13,7 +13,7 @@ use ChamiloSession as Session;
$cidReset = true; $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$session_id = isset($_GET['session_id']) ? (int) $_GET['session_id'] : null; $session_id = isset($_GET['session_id']) ? (int) $_GET['session_id'] : 0;
if (empty($session_id)) { if (empty($session_id)) {
api_not_allowed(true); api_not_allowed(true);

@ -10,7 +10,7 @@ $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$id_session = intval($_GET['id_session']); $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); SessionManager::protectSession($id_session);
$course_code = $_GET['course_code']; $course_code = $_GET['course_code'];
$course_info = api_get_course_info($_REQUEST['course_code']); $course_info = api_get_course_info($_REQUEST['course_code']);

@ -10,7 +10,7 @@ require_once __DIR__.'/../inc/global.inc.php';
// setting the section (for the tabs) // setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$id_session = intval($_GET['id_session']); $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); SessionManager::protectSession($id_session);
// Database Table Definitions // Database Table Definitions

@ -14,12 +14,11 @@ require_once __DIR__.'/../inc/global.inc.php';
// setting the section (for the tabs) // setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN; $this_section = SECTION_PLATFORM_ADMIN;
$tool_name = get_lang('EditSessionCoursesByUser'); $tool_name = get_lang('EditSessionCoursesByUser');
$id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session);
$id_session = intval($_GET['id_session']);
$id_user = intval($_GET['id_user']); $id_user = intval($_GET['id_user']);
SessionManager::protectSession($id_session);
$em = Database::getManager(); $em = Database::getManager();
/** @var Session $session */ /** @var Session $session */
$session = $em->find('ChamiloCoreBundle:Session', $id_session); $session = $em->find('ChamiloCoreBundle:Session', $id_session);

@ -15,7 +15,7 @@ $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$id_session = intval($_GET['id_session']); $id_session = isset($_GET['id_session']) ? (int) $_GET['id_session'] : 0;
SessionManager::protectSession($id_session); SessionManager::protectSession($id_session);
if (empty($id_session)) { if (empty($id_session)) {

@ -14,6 +14,7 @@ $this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(true); api_protect_admin_script(true);
$session_id = isset($_GET['session_id']) ? intval($_GET['session_id']) : 0; $session_id = isset($_GET['session_id']) ? intval($_GET['session_id']) : 0;
$formSent = 0; $formSent = 0;
$errorMsg = ''; $errorMsg = '';

@ -20,6 +20,8 @@ $action = isset($_GET['action']) ? $_GET['action'] : null;
$check = Security::check_token('request'); $check = Security::check_token('request');
$token = Security::get_token(); $token = Security::get_token();
$actions = '';
$message = '';
switch ($action) { switch ($action) {
case 'add': case 'add':
@ -149,7 +151,7 @@ switch ($action) {
break; break;
} }
$tpl = new Template($tool_name); $tpl = new Template();
$tpl->assign('actions', $actions); $tpl->assign('actions', $actions);
$tpl->assign('message', $message); $tpl->assign('message', $message);

@ -2,6 +2,9 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true);
$lib_path = api_get_path(LIBRARY_PATH); $lib_path = api_get_path(LIBRARY_PATH);
/* Libraries */ /* Libraries */

Loading…
Cancel
Save