Improper Access Control

از Secure Coding

در آسیب پذیری Improper Access Control مهاجم می تواند داده های محافظت شده دسترسی پیدا کند.

کنترل دسترسی شامل چند بخش است که عبارتنند از:

  1. احراز هویت یا Authentication
  2. مجوز دسترسی یا Authorization
  3. وظایف یا Accountability

نقص در هر یک از بخش های بالا باعث این آسیب پذیری می شود.

همچنین ویژگی های شناسایی این آسیب پذیری را می توان به صورت زیر مشخص نمود.

1-تغییر:

تغییر مشخصات مالکیت و یا دسترسی


برای مثال فرض کنید ایجاد کلمه عبور بر روی فایل ها فقط توسط مدیر سیستم امکان پذیر است، ولی مهاجم با دسترسی کاربر عادی بتواند برای فایل ها کلمه عبور تعیین کند.

2-اجرا:

اجرای ویژگی خاص با دسترسی محدود

برای مثال فرض کنید مهاجم با دسترسی کاربر عادی بتواند کاربر ایجاد و یا حذف کند.

روش های جلوگیری[ویرایش]

روش های جلوگیری در PHP[ویرایش]

مثال 1)

<?php 
include("inc/css.php"); 
session_start();
?>
<html>
<head>
</head>
<body>
<form action="" method="post">

<div class="member-page">

<div class="form-group">
<h4>Member's Area</h4>
</div>

<div class="dashboard">
<h6>

<div class="form-group">
<li><a href="?action=account">My Account</a></li>
</div>

<div class="form-group">
<li><a href="?action=download">Download Software</a></li>
</div>

<div class="form-group">
<li><a href="?action=tickets">Create a Support Ticket</a></li>
</div>

<div class="form-group">
<li><a href="?action=resources">Member Resources</a></li>
</div>

<div class="form-group">
<li><a href="?action=logout.php">Log Out</a></li>
</div>

</div>

<?php include("inc/js.php"); ?>
</body>
</html>

راه حل 1)

<?php 
include("inc/css.php"); 
session_start();
if(!isset($_SESSION['user'])){
   header("Location:login.php");
   exit;
}
?>
<html>
<head>
</head>
<body>
<form action="" method="post">

<div class="member-page">

<div class="form-group">
<h4>Member's Area</h4>
</div>

<div class="dashboard">
<h6>

<div class="form-group">
<li><a href="?action=account">My Account</a></li>
</div>

<div class="form-group">
<li><a href="?action=download">Download Software</a></li>
</div>

<div class="form-group">
<li><a href="?action=tickets">Create a Support Ticket</a></li>
</div>

<div class="form-group">
<li><a href="?action=resources">Member Resources</a></li>
</div>

<div class="form-group">
<li><a href="?action=logout.php">Log Out</a></li>
</div>

</div>

<?php include("inc/js.php"); ?>
</body>
</html>

روش های جلوگیری در ASP.NET[ویرایش]

مثال 1)

<%@ Page Language="C#" AutoEventWireup="true"  %>
<%@ Register Namespace="Active.Web.UI.Controls" Assembly="Active.Web.UI.Controls" TagPrefix="active" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Dashboard Page</title>
</head>
<body>
<form action="" method="post">

<div class="member-page">

<div class="form-group">
<h4>Member's Area</h4>
</div>

<div class="dashboard">
<h6>

<div class="form-group">
<li><a href="?action=account">My Account</a></li>
</div>

<div class="form-group">
<li><a href="?action=download">Download Software</a></li>
</div>

<div class="form-group">
<li><a href="?action=tickets">Create a Support Ticket</a></li>
</div>

<div class="form-group">
<li><a href="?action=resources">Member Resources</a></li>
</div>

<div class="form-group">
<li><a href="?action=logout.jsp">Log Out</a></li>
</div>

</div>
</body>
</html>

راه حل 1)

<%@ Page Language="C#" AutoEventWireup="true"  %>
<%@ Register Namespace="Active.Web.UI.Controls" Assembly="Active.Web.UI.Controls" TagPrefix="active" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Dashboard Page</title>
    <script runat="server">
        protected override void OnLoad(object sender, EventArgs e)
        {
            if (Session["User_ID"])==null)
             {
                Response.Redirect("login.aspx");
             } 
        }
    </script>
</head>
<body>
<form action="" method="post">

<div class="member-page">

<div class="form-group">
<h4>Member's Area</h4>
</div>

<div class="dashboard">
<h6>

<div class="form-group">
<li><a href="?action=account">My Account</a></li>
</div>

<div class="form-group">
<li><a href="?action=download">Download Software</a></li>
</div>

<div class="form-group">
<li><a href="?action=tickets">Create a Support Ticket</a></li>
</div>

<div class="form-group">
<li><a href="?action=resources">Member Resources</a></li>
</div>

<div class="form-group">
<li><a href="?action=logout.jsp">Log Out</a></li>
</div>

</div>
</body>
</html>

روش های جلوگیری در JAVA[ویرایش]

مثال 1)

<html>
<head>
</head>
<body>
<form action="" method="post">

<div class="member-page">

<div class="form-group">
<h4>Member's Area</h4>
</div>

<div class="dashboard">
<h6>

<div class="form-group">
<li><a href="?action=account">My Account</a></li>
</div>

<div class="form-group">
<li><a href="?action=download">Download Software</a></li>
</div>

<div class="form-group">
<li><a href="?action=tickets">Create a Support Ticket</a></li>
</div>

<div class="form-group">
<li><a href="?action=resources">Member Resources</a></li>
</div>

<div class="form-group">
<li><a href="?action=logout.jsp">Log Out</a></li>
</div>

</div>

</body>
</html>

راه حل 1)

<%
    session=request.getSession(false);
    if(session.getAttribute("User_ID")==null)
    {
        response.sendRedirect("login.jsp");
    }

%>

<html>
<head>
</head>
<body>
<form action="" method="post">

<div class="member-page">

<div class="form-group">
<h4>Member's Area</h4>
</div>

<div class="dashboard">
<h6>

<div class="form-group">
<li><a href="?action=account">My Account</a></li>
</div>

<div class="form-group">
<li><a href="?action=download">Download Software</a></li>
</div>

<div class="form-group">
<li><a href="?action=tickets">Create a Support Ticket</a></li>
</div>

<div class="form-group">
<li><a href="?action=resources">Member Resources</a></li>
</div>

<div class="form-group">
<li><a href="?action=logout.jsp">Log Out</a></li>
</div>

</div>

</body>
</html>