diff --git a/security_review.help.inc b/security_review.help.inc
index c5378a7..393f602 100644
--- a/security_review.help.inc
+++ b/security_review.help.inc
@@ -330,6 +330,35 @@ function security_review_check_upload_extensions_help($results = NULL) {
   return $element;
 }
 
+function security_review_check_views_access_help($results = NULL) {
+  $element['title'] = t('Views access');
+  $element['descriptions'][] = t("Views can check if the user is allowed access to the content. It is recommended that all Views implement some amount of access control, at a minimum checking for the permission 'access content'.");
+
+  $last_check = security_review_get_last_check('views', 'access');
+  if ($last_check['skip'] == '1') {
+    $element['findings']['descriptions'][] = _security_review_check_skipped($last_check);
+  }
+  elseif ($last_check['result'] == '0') {
+    $element['findings']['descriptions'][] = t('The following View displays do not check access.');
+    if (is_null($results)) {
+      $results = security_review_check_views_access();
+    }
+    foreach ($results['value'] as $view => $displays) {
+      $url = 'admin/structure/views/view/' . $view . '/edit/';
+      foreach ($displays as $display) {
+        $item = $view . ': ' . $display;
+        $element['findings']['items'][] = array(
+          'html' => l($item, $url . $display),
+          'safe' => $item, // View names are safe.
+          'raw' => $item,
+        );
+      }
+    }
+  }
+
+  return $element;
+}
+
 function security_review_check_name_passwords_help($results = NULL) {
   $element['title'] = t('Username as password');
   $element['descriptions'][] = t("Users with elevated access on the site (trusted users) who have a their account password the same as their username. It is recommended you enforce a password strength policy to avoid an attacker easily gaining access to your site.");
diff --git a/security_review.inc b/security_review.inc
index 2e729bf..d7a99ff 100644
--- a/security_review.inc
+++ b/security_review.inc
@@ -175,6 +175,23 @@ function _security_review_security_checks() {
 }
 
 /**
+ * Checks for security_review_get_checks() when Views is enabled.
+ */
+function views_security_checks() {
+  // TODO: Add more help.
+  $checks['access'] = array(
+    'title' => t('Views access'),
+    'callback' => 'security_review_check_views_access',
+    'success' => t('Views are access controlled.'),
+    'failure' => t('There are Views that do not provide any access checks.'),
+    'module' => 'security_review',
+    // Specify this file because the callback is here.
+    'file' => 'security_review',
+  );
+  return array('views' => $checks);
+}
+
+/**
  * Check that files aren't writeable by the server.
  */
 function security_review_check_file_perms() {
@@ -555,9 +572,35 @@ function _security_review_weak_passwords($trusted_roles) {
  */
 function security_review_get_checks() {
   $checks = _security_review_security_checks();
+  if (module_exists('views') && function_exists('views_get_all_views')) {
+    $views = views_security_checks();
+    $checks = array_merge($checks, $views);
+  }
   return $checks;
 }
 
+function security_review_check_views_access($last_check = NULL) {
+  $result = TRUE;
+  $check_result_value = array();
+  $timestamp = NULL;
+  // Load and loop through every view, checking the access type in displays.
+  $views = views_get_all_views();
+  foreach ($views as $view) {
+    if ($view->disabled !== TRUE) {
+      // Access is set in display options of a display.
+      foreach ($view->display as $display_name => $display) {
+        if (isset($display->display_options['access']) && $display->display_options['access']['type'] == 'none') {
+          $check_result_value[$view->name][] = $display_name;
+        }
+      }
+    }
+  }
+  if (!empty($check_result_value)) {
+    $result = FALSE;
+  }
+  return array('result' => $result, 'value' => $check_result_value);
+}
+
 /**
  * Helper function defines HTML tags that are considered unsafe.
  *
