SlideShare ist ein Scribd-Unternehmen logo
1 von 11
10 Tips for Building a Secure 
PHP Application
Tip 1: Use Proper Error Reporting/Handling 
 The development process of the application can become very 
cumbersome when the errors are not handled properly. In other words if 
there are no error reports enabled then identifying the minor mistakes like 
spell checks, incorrect functions usage and many more mistakes can 
become very difficult. It is a great practice to enable error reporting before 
even starting the development process. Once the website goes live, just 
hide error reporting from displaying. 
 Set Below Code in PHP.ini file 
Log_errors = On 
Display_errors = Off 
 Set Below Code in 
Configuration file 
define('DEBUG',true); 
if(DEBUG ==true) 
{ 
ini_set('display_errors','On'); 
error_reporting(E_ALL); 
} 
else 
{ 
ini_set('display_errors','Off'); 
error_reporting(0); 
}
Tip 2: Validate Input 
 The inputs that are coming from the users needs to be validated from 
server side as well as client side. The inputs come in the form of POST or 
GET. Always use regular expressions in validation to avoid blank entries in 
the database. 
 Check the ‘type’ of the data 
 Check range of numbers 
 Check length of strings 
 Check emails , urls , dates to be valid 
 Ensure that data does not contain un allowed characters. 
For Example,if Month value is not valid 
if ( ! preg match( "/^[0-9]{1,2}$/", $_GET['month'] ) ) 
{ 
echo “”; // handle error 
}
Tip 3: Protecting Against Sql Injection 
 To perform your database queries, one should be using PHP Data 
Objects(PDO). With parameterized queries and prepared statements 
(Store Procedure), you can prevent SQL injection. 
 Take a look at the following example: 
<?php 
$sql = "SELECT * FROM users WHERE name=:name and age=:age"; 
$stmt = $db->prepare($sql); 
$stmt->execute(array(":name" => $name, ":age" => $age)); ?> 
 The code given above has two parameters named :name and :age. 
Prepare() is the method which informs the database engine to pre-compile 
the query and attach the values to the named parameters later. When 
execute() is called, the query is executed with the actual values of the 
named parameters. By coding this way, the attacker on the SQL wont be 
able to inject a malicious query because the queries are already 
precompiled and the database will not accept it. Hence a secure database 
can be achieved. 
 Mysql real escape string :- The mysql real escape string() function 
escapes special characters in a string for use in an SQL statement
Tip 4: Disable PHP’s Bad Features 
 Global Variables (Register Globals) 
 Using the PHP feature ‘Register Globals’ can hamper the objective of 
maintaining programming safety. As soon as this feature is activated in the 
PHP configuration file, even an uninitialized variable can lead to a 
damaging security flaw and the height is almost anyone can seize 
administrative control. To deal with this situation, disable Register Globals, 
ensure that you initialize variables as well as use localized variables too 
within the program. 
 If the application is running with register globals ON, a user could just 
place access=1 into a query string, and would then have access to 
whatever the script is running. 
 Unfortunately, we cannot disable register globals from the script side 
(using ini set, like we normally might), but we can use an .htaccess files to 
do this. 
 Set Below Code in .htaccessfile for disabling 
php flagregister globals 0 
 Set Below Code in php.ini file (if you have access for the same) for 
disabling 
register_globals = Off
Tip 5: Protect Against XSS Attacks 
 Cross Site Scripting has to be protected in order to protect a very simple 
attack on the website. PHP Application which allows the user inputs may 
come across a situation where the user placed a malicious script as per 
the example below into your application. 
 Here is an example of what an XSS attacker might submit to an 
application: 
<script>window.location.href='http://www.bad-location.com';</script> 
 What the script means is, it will hijack every user who visits that output 
page and send them to an unwanted page. This type of attack can be 
eliminated by using proper techniques to validate user input data and not 
allowing specific types of data. 
 Few functions to filter/validate data : 
htmlentities() ,strip_tags () , utf8_decode (), htmlspecialchars() , 
ctype_digit() , ctype_alnum(), stripslashes() , str_replace()
Tip 6: Avoid Short tags 
 <? and <?= are called short open tags, and are not always enabled. 
 PHP 5.3.0, they are disabled by default, however if they are enabled Set 
Below Code in PHP.ini file 
short_open_tag = Off 
 Your Application will not work if they are not enabled. 
Tip 7: Protect Against CSRF Attacks 
 CSRF stands for Cross Site Request Forgery. The attacker is the remote 
machine which is trying to access the cookies or some other means of a 
normal legitimate user. For example when the user is trying to comment 
on the website, the login information is primarily stored in the cookies and 
there is every possibility that the cookies can be accessed by remote 
server who is a malicious user. This is why it is imperative to use filters 
when requesting for random information. 
 Lets say a certain url in the application performs some database changes, 
update_info.php?id=123 
delete_record.php?id=123
 A hacker can setup a webpage with the following piece of code 
 <image(tag) source(tag)=”http://www.original-application. 
com/delete_record.php?id=123″ alt=”” /> 
 Ask the user to open this webpage. Now since the user is logged into the 
application the url will be triggered and whatever action necessary would 
be taken by the script.So basically a hacker has made the request through 
the user. This is “request forgery”. 
 Solution is to, enable the server to identify each request with a key/random 
value. 
Tip 8: Securing the session 
 Regenerate Session ID ( function:— session_regenerate_id(); ) 
Lock the user agent during a session 
 //Function to check if user is logged in or not 
functioncheck_login_status() 
{ 
if($_SESSION['logged'] == true and$_SESSION['old_user_agent'] == 
$_SERVER['HTTP_USER_AGENT'])
{returntrue;} 
returnfalse; 
} 
if(!check_login_status()) 
{ 
logout(); 
} 
 Lock the IP of a session 
$user_agent= @md5( $_SERVER['HTTP_ACCEPT_CHARSET'] . 
$_SERVER['HTTP_ACCEPT_ENCODING'] . 
$_SERVER['HTTP_ACCEPT_LANGUAGE'] . 
$_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']); 
 Store sessions in database 
 By default sessions are stored in files. Many applications are hosted on 
shared hosting environments where the session files are saved to /tmp 
directory. This directory may be readable to other users as well. If 
unencrypted the session information will be plain text in the file : 
userName|s:5:”ngood”;accountNumber|s:9:”123456789″; 
 Store sessions in database. Sessions stored inside database are not 
visible like files. They are only available to the application using it.
Tip 9: Setup correct directory permissions 
 Directories should have proper permissions with regard to the need of 
being writable or not. Keep a separate directory for temp files, cache files 
and other resource files and mark them writable as needed. Also 
directories (like temp) which can contain resource files, or files with other 
information should be guarded well and be totally inaccessible to the 
outside web. 
 Use htaccess to block all access to such directories( deny from all ) 
Tip 10: Password Security 
$salt = 'SUPER_SALTY'; 
$hash = md5($password . $salt); 
Original Source URL : http://www.techtic.com/blog/10-tips-for-building- 
a-secure-php-application/
Thank You 
Techtic Solutions 
PHP Development Company India 
Mail. info@techtic.com 
USA: +1 201-793-8324 
UK: +44 117 2308324 
AUS: +61 280 909 320

Weitere ähnliche Inhalte

Mehr von Techtic Solutions

Top 10 Marketing Automation Tools for eCommerce Stores.pptx
Top 10 Marketing Automation Tools for eCommerce Stores.pptxTop 10 Marketing Automation Tools for eCommerce Stores.pptx
Top 10 Marketing Automation Tools for eCommerce Stores.pptxTechtic Solutions
 
Why Having the Right Tech Stack is Critical for eCommerce?
Why Having the Right Tech Stack is Critical for eCommerce?Why Having the Right Tech Stack is Critical for eCommerce?
Why Having the Right Tech Stack is Critical for eCommerce?Techtic Solutions
 
8 Factors will Drive Fintech Growth in 2021
8 Factors will Drive Fintech Growth in 20218 Factors will Drive Fintech Growth in 2021
8 Factors will Drive Fintech Growth in 2021Techtic Solutions
 
Top 12 Advantages of Laravel Framework
Top 12 Advantages of Laravel FrameworkTop 12 Advantages of Laravel Framework
Top 12 Advantages of Laravel FrameworkTechtic Solutions
 
10 Common Applications of Artificial Intelligence in Healthcare
10 Common Applications of Artificial Intelligence in Healthcare10 Common Applications of Artificial Intelligence in Healthcare
10 Common Applications of Artificial Intelligence in HealthcareTechtic Solutions
 
What security measures do we take when working remotely?
What security measures do we take when working remotely?What security measures do we take when working remotely?
What security measures do we take when working remotely?Techtic Solutions
 
How Techtic Implements Seamless Project Management?
How Techtic Implements Seamless Project Management?How Techtic Implements Seamless Project Management?
How Techtic Implements Seamless Project Management?Techtic Solutions
 
Facts of Software Development
Facts of Software DevelopmentFacts of Software Development
Facts of Software DevelopmentTechtic Solutions
 
How to Integrate Mobile App with Website?
How to Integrate Mobile App with Website?How to Integrate Mobile App with Website?
How to Integrate Mobile App with Website?Techtic Solutions
 
10 On-demand App Statistics to look at During COVID-19
10 On-demand App Statistics to look at During COVID-1910 On-demand App Statistics to look at During COVID-19
10 On-demand App Statistics to look at During COVID-19Techtic Solutions
 
What’s new in Laravel 7.8?
What’s new in Laravel 7.8?What’s new in Laravel 7.8?
What’s new in Laravel 7.8?Techtic Solutions
 
Laravel Vs Django, Which Backend Framework is better?
Laravel Vs Django, Which Backend Framework is better?Laravel Vs Django, Which Backend Framework is better?
Laravel Vs Django, Which Backend Framework is better?Techtic Solutions
 
Differences between Mobile Apps and Websites – Techtic Solutions
Differences between Mobile Apps and Websites – Techtic SolutionsDifferences between Mobile Apps and Websites – Techtic Solutions
Differences between Mobile Apps and Websites – Techtic SolutionsTechtic Solutions
 
How to Integrate Mobile App with Website? – Techtic Solutions
How to Integrate Mobile App with Website? – Techtic SolutionsHow to Integrate Mobile App with Website? – Techtic Solutions
How to Integrate Mobile App with Website? – Techtic SolutionsTechtic Solutions
 
Advantages of Mobile Apps – Techtic Solutions
Advantages of Mobile Apps – Techtic SolutionsAdvantages of Mobile Apps – Techtic Solutions
Advantages of Mobile Apps – Techtic SolutionsTechtic Solutions
 
Design Thinking Myths - Techtic Solutions
Design Thinking Myths - Techtic SolutionsDesign Thinking Myths - Techtic Solutions
Design Thinking Myths - Techtic SolutionsTechtic Solutions
 
Why should you Develop Mockups? - Techtic Solutions
Why should you Develop Mockups? - Techtic SolutionsWhy should you Develop Mockups? - Techtic Solutions
Why should you Develop Mockups? - Techtic SolutionsTechtic Solutions
 
Best Laravel Eloquent Tips and Tricks
Best Laravel Eloquent Tips and TricksBest Laravel Eloquent Tips and Tricks
Best Laravel Eloquent Tips and TricksTechtic Solutions
 
6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...
6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...
6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...Techtic Solutions
 
ReactJS Vs React Native: Understanding Differences, Advantages, Disadvantages
ReactJS Vs React Native: Understanding Differences, Advantages, DisadvantagesReactJS Vs React Native: Understanding Differences, Advantages, Disadvantages
ReactJS Vs React Native: Understanding Differences, Advantages, DisadvantagesTechtic Solutions
 

Mehr von Techtic Solutions (20)

Top 10 Marketing Automation Tools for eCommerce Stores.pptx
Top 10 Marketing Automation Tools for eCommerce Stores.pptxTop 10 Marketing Automation Tools for eCommerce Stores.pptx
Top 10 Marketing Automation Tools for eCommerce Stores.pptx
 
Why Having the Right Tech Stack is Critical for eCommerce?
Why Having the Right Tech Stack is Critical for eCommerce?Why Having the Right Tech Stack is Critical for eCommerce?
Why Having the Right Tech Stack is Critical for eCommerce?
 
8 Factors will Drive Fintech Growth in 2021
8 Factors will Drive Fintech Growth in 20218 Factors will Drive Fintech Growth in 2021
8 Factors will Drive Fintech Growth in 2021
 
Top 12 Advantages of Laravel Framework
Top 12 Advantages of Laravel FrameworkTop 12 Advantages of Laravel Framework
Top 12 Advantages of Laravel Framework
 
10 Common Applications of Artificial Intelligence in Healthcare
10 Common Applications of Artificial Intelligence in Healthcare10 Common Applications of Artificial Intelligence in Healthcare
10 Common Applications of Artificial Intelligence in Healthcare
 
What security measures do we take when working remotely?
What security measures do we take when working remotely?What security measures do we take when working remotely?
What security measures do we take when working remotely?
 
How Techtic Implements Seamless Project Management?
How Techtic Implements Seamless Project Management?How Techtic Implements Seamless Project Management?
How Techtic Implements Seamless Project Management?
 
Facts of Software Development
Facts of Software DevelopmentFacts of Software Development
Facts of Software Development
 
How to Integrate Mobile App with Website?
How to Integrate Mobile App with Website?How to Integrate Mobile App with Website?
How to Integrate Mobile App with Website?
 
10 On-demand App Statistics to look at During COVID-19
10 On-demand App Statistics to look at During COVID-1910 On-demand App Statistics to look at During COVID-19
10 On-demand App Statistics to look at During COVID-19
 
What’s new in Laravel 7.8?
What’s new in Laravel 7.8?What’s new in Laravel 7.8?
What’s new in Laravel 7.8?
 
Laravel Vs Django, Which Backend Framework is better?
Laravel Vs Django, Which Backend Framework is better?Laravel Vs Django, Which Backend Framework is better?
Laravel Vs Django, Which Backend Framework is better?
 
Differences between Mobile Apps and Websites – Techtic Solutions
Differences between Mobile Apps and Websites – Techtic SolutionsDifferences between Mobile Apps and Websites – Techtic Solutions
Differences between Mobile Apps and Websites – Techtic Solutions
 
How to Integrate Mobile App with Website? – Techtic Solutions
How to Integrate Mobile App with Website? – Techtic SolutionsHow to Integrate Mobile App with Website? – Techtic Solutions
How to Integrate Mobile App with Website? – Techtic Solutions
 
Advantages of Mobile Apps – Techtic Solutions
Advantages of Mobile Apps – Techtic SolutionsAdvantages of Mobile Apps – Techtic Solutions
Advantages of Mobile Apps – Techtic Solutions
 
Design Thinking Myths - Techtic Solutions
Design Thinking Myths - Techtic SolutionsDesign Thinking Myths - Techtic Solutions
Design Thinking Myths - Techtic Solutions
 
Why should you Develop Mockups? - Techtic Solutions
Why should you Develop Mockups? - Techtic SolutionsWhy should you Develop Mockups? - Techtic Solutions
Why should you Develop Mockups? - Techtic Solutions
 
Best Laravel Eloquent Tips and Tricks
Best Laravel Eloquent Tips and TricksBest Laravel Eloquent Tips and Tricks
Best Laravel Eloquent Tips and Tricks
 
6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...
6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...
6 Best Project Management Tools Comparison: Jira vs. Trello vs. MS Project vs...
 
ReactJS Vs React Native: Understanding Differences, Advantages, Disadvantages
ReactJS Vs React Native: Understanding Differences, Advantages, DisadvantagesReactJS Vs React Native: Understanding Differences, Advantages, Disadvantages
ReactJS Vs React Native: Understanding Differences, Advantages, Disadvantages
 

Kürzlich hochgeladen

专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degreeyuu sss
 
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
PORTAFOLIO   2024_  ANASTASIYA  KUDINOVAPORTAFOLIO   2024_  ANASTASIYA  KUDINOVA
PORTAFOLIO 2024_ ANASTASIYA KUDINOVAAnastasiya Kudinova
 
韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作7tz4rjpd
 
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
cda.pptx critical discourse analysis ppt
cda.pptx critical discourse analysis pptcda.pptx critical discourse analysis ppt
cda.pptx critical discourse analysis pptMaryamAfzal41
 
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...katerynaivanenko1
 
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一diploma 1
 
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...mrchrns005
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxmapanig881
 
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services DubaiDubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubaikojalkojal131
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证nhjeo1gg
 
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCRdollysharma2066
 
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一Fi sss
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIyuj
 
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts ServiceCall Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Servicejennyeacort
 
Call Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full NightCall Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full Nightssuser7cb4ff
 
'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,
'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,
'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,Aginakm1
 
Architecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdfArchitecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdfSumit Lathwal
 

Kürzlich hochgeladen (20)

专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
 
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
PORTAFOLIO   2024_  ANASTASIYA  KUDINOVAPORTAFOLIO   2024_  ANASTASIYA  KUDINOVA
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
 
韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作
 
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
 
cda.pptx critical discourse analysis ppt
cda.pptx critical discourse analysis pptcda.pptx critical discourse analysis ppt
cda.pptx critical discourse analysis ppt
 
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
 
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
 
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptx
 
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services DubaiDubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
 
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
 
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
8377877756 Full Enjoy @24/7 Call Girls in Nirman Vihar Delhi NCR
 
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AI
 
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts ServiceCall Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
Call Girls in Ashok Nagar Delhi ✡️9711147426✡️ Escorts Service
 
Call Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full NightCall Girls Aslali 7397865700 Ridhima Hire Me Full Night
Call Girls Aslali 7397865700 Ridhima Hire Me Full Night
 
'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,
'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,
'CASE STUDY OF INDIRA PARYAVARAN BHAVAN DELHI ,
 
Architecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdfArchitecture case study India Habitat Centre, Delhi.pdf
Architecture case study India Habitat Centre, Delhi.pdf
 

10 tips for building a secure php application

  • 1. 10 Tips for Building a Secure PHP Application
  • 2. Tip 1: Use Proper Error Reporting/Handling  The development process of the application can become very cumbersome when the errors are not handled properly. In other words if there are no error reports enabled then identifying the minor mistakes like spell checks, incorrect functions usage and many more mistakes can become very difficult. It is a great practice to enable error reporting before even starting the development process. Once the website goes live, just hide error reporting from displaying.  Set Below Code in PHP.ini file Log_errors = On Display_errors = Off  Set Below Code in Configuration file define('DEBUG',true); if(DEBUG ==true) { ini_set('display_errors','On'); error_reporting(E_ALL); } else { ini_set('display_errors','Off'); error_reporting(0); }
  • 3. Tip 2: Validate Input  The inputs that are coming from the users needs to be validated from server side as well as client side. The inputs come in the form of POST or GET. Always use regular expressions in validation to avoid blank entries in the database.  Check the ‘type’ of the data  Check range of numbers  Check length of strings  Check emails , urls , dates to be valid  Ensure that data does not contain un allowed characters. For Example,if Month value is not valid if ( ! preg match( "/^[0-9]{1,2}$/", $_GET['month'] ) ) { echo “”; // handle error }
  • 4. Tip 3: Protecting Against Sql Injection  To perform your database queries, one should be using PHP Data Objects(PDO). With parameterized queries and prepared statements (Store Procedure), you can prevent SQL injection.  Take a look at the following example: <?php $sql = "SELECT * FROM users WHERE name=:name and age=:age"; $stmt = $db->prepare($sql); $stmt->execute(array(":name" => $name, ":age" => $age)); ?>  The code given above has two parameters named :name and :age. Prepare() is the method which informs the database engine to pre-compile the query and attach the values to the named parameters later. When execute() is called, the query is executed with the actual values of the named parameters. By coding this way, the attacker on the SQL wont be able to inject a malicious query because the queries are already precompiled and the database will not accept it. Hence a secure database can be achieved.  Mysql real escape string :- The mysql real escape string() function escapes special characters in a string for use in an SQL statement
  • 5. Tip 4: Disable PHP’s Bad Features  Global Variables (Register Globals)  Using the PHP feature ‘Register Globals’ can hamper the objective of maintaining programming safety. As soon as this feature is activated in the PHP configuration file, even an uninitialized variable can lead to a damaging security flaw and the height is almost anyone can seize administrative control. To deal with this situation, disable Register Globals, ensure that you initialize variables as well as use localized variables too within the program.  If the application is running with register globals ON, a user could just place access=1 into a query string, and would then have access to whatever the script is running.  Unfortunately, we cannot disable register globals from the script side (using ini set, like we normally might), but we can use an .htaccess files to do this.  Set Below Code in .htaccessfile for disabling php flagregister globals 0  Set Below Code in php.ini file (if you have access for the same) for disabling register_globals = Off
  • 6. Tip 5: Protect Against XSS Attacks  Cross Site Scripting has to be protected in order to protect a very simple attack on the website. PHP Application which allows the user inputs may come across a situation where the user placed a malicious script as per the example below into your application.  Here is an example of what an XSS attacker might submit to an application: <script>window.location.href='http://www.bad-location.com';</script>  What the script means is, it will hijack every user who visits that output page and send them to an unwanted page. This type of attack can be eliminated by using proper techniques to validate user input data and not allowing specific types of data.  Few functions to filter/validate data : htmlentities() ,strip_tags () , utf8_decode (), htmlspecialchars() , ctype_digit() , ctype_alnum(), stripslashes() , str_replace()
  • 7. Tip 6: Avoid Short tags  <? and <?= are called short open tags, and are not always enabled.  PHP 5.3.0, they are disabled by default, however if they are enabled Set Below Code in PHP.ini file short_open_tag = Off  Your Application will not work if they are not enabled. Tip 7: Protect Against CSRF Attacks  CSRF stands for Cross Site Request Forgery. The attacker is the remote machine which is trying to access the cookies or some other means of a normal legitimate user. For example when the user is trying to comment on the website, the login information is primarily stored in the cookies and there is every possibility that the cookies can be accessed by remote server who is a malicious user. This is why it is imperative to use filters when requesting for random information.  Lets say a certain url in the application performs some database changes, update_info.php?id=123 delete_record.php?id=123
  • 8.  A hacker can setup a webpage with the following piece of code  <image(tag) source(tag)=”http://www.original-application. com/delete_record.php?id=123″ alt=”” />  Ask the user to open this webpage. Now since the user is logged into the application the url will be triggered and whatever action necessary would be taken by the script.So basically a hacker has made the request through the user. This is “request forgery”.  Solution is to, enable the server to identify each request with a key/random value. Tip 8: Securing the session  Regenerate Session ID ( function:— session_regenerate_id(); ) Lock the user agent during a session  //Function to check if user is logged in or not functioncheck_login_status() { if($_SESSION['logged'] == true and$_SESSION['old_user_agent'] == $_SERVER['HTTP_USER_AGENT'])
  • 9. {returntrue;} returnfalse; } if(!check_login_status()) { logout(); }  Lock the IP of a session $user_agent= @md5( $_SERVER['HTTP_ACCEPT_CHARSET'] . $_SERVER['HTTP_ACCEPT_ENCODING'] . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']);  Store sessions in database  By default sessions are stored in files. Many applications are hosted on shared hosting environments where the session files are saved to /tmp directory. This directory may be readable to other users as well. If unencrypted the session information will be plain text in the file : userName|s:5:”ngood”;accountNumber|s:9:”123456789″;  Store sessions in database. Sessions stored inside database are not visible like files. They are only available to the application using it.
  • 10. Tip 9: Setup correct directory permissions  Directories should have proper permissions with regard to the need of being writable or not. Keep a separate directory for temp files, cache files and other resource files and mark them writable as needed. Also directories (like temp) which can contain resource files, or files with other information should be guarded well and be totally inaccessible to the outside web.  Use htaccess to block all access to such directories( deny from all ) Tip 10: Password Security $salt = 'SUPER_SALTY'; $hash = md5($password . $salt); Original Source URL : http://www.techtic.com/blog/10-tips-for-building- a-secure-php-application/
  • 11. Thank You Techtic Solutions PHP Development Company India Mail. info@techtic.com USA: +1 201-793-8324 UK: +44 117 2308324 AUS: +61 280 909 320