


A simple understanding of session security in php_PHP tutorial
There are many ways to obtain the session ID. An attacker can obtain it by viewing the clear text communication, so it is dangerous to put the session ID in the URL or in a cookie transmitted over an unencrypted connection; also in the URL ( Passing the session ID as the _get() parameter) is also unsafe because the URL is stored in the browser's history cache and can easily be read. (You can consider using ssh for encrypted transmission)
The main security measures include the following two aspects.
1. Prevent attackers from obtaining the user’s session ID.
There are many ways to obtain the session ID. An attacker can obtain it by viewing the clear text communication, so it is dangerous to put the session ID in the URL or in a cookie transmitted over an unencrypted connection; also in the URL ( Passing the session ID as the _get() parameter) is also unsafe because the URL is stored in the browser's history cache and can easily be read. (You can consider using ssh for encrypted transmission)
There is also a more subtle attack method. The attacker redirects users on the breached website to another website through a website that has been breached by a script attack, and then in the URL of the redirected website Insert the following code:
?PHPSESSID=213456465412312365465412312;
Finally sent to the web application. When the user views the web application, PHP will see that there is no data associated with this session ID and will create some. The user does not know what happened, but the attacker knows the session ID and can use this session ID to enter the application.
To prevent this attack, there are two ways.
(1) Check whether session.use_only_cookie is turned on in php tutorial.ini. If this is the case, PHP will reject URL-based session IDs.
(2) When starting a session, put a variable in the session data. This variable indicates that the session was created by the user; if it is found that there is no such variable in the session data, it means that the session ID is false, and you can call the session_regenerate_id function to give Existing sessions are assigned a new session ID.
Example:
Determine whether the session ID is true or false by judging whether the variable exists. If it exists, the session ID is true, otherwise it is false. Use the session_regenerate_id() function to change the session ID and create a new one for the session. session ID,
The code is as follows:
Copy the code. The code is as follows:
< ?php
session_start () ;
if (!isset ( $_SESSION['shili1'] )) { //Determine whether the shili1 variable is configured
$old_id = session_id (); //The variable name of the original session ID
session_regenerate_id (); //Get a new session ID
$new_id = session_id (); //Variable name of new session ID
echo "old : $old_id
" ; //Output the original session ID
echo "new : $new_id
" ; //Output new session ID
$_SESSION['shili1'] = TRUE ; }
?>
The running results are as shown in the figure:
This is just an example. The purpose of outputting the session ID is to better understand and apply this function. In programming, there is no need to output the session ID.
2. Restrict attackers from obtaining session IDs.
The method to limit attackers from obtaining the session ID is as follows.
(1) Use a function (md5) to calculate the hash value (hash) of the User-Agent header plus some additional string data. (A hash function takes an arbitrarily large set of data and converts it into a very different-looking data set. The resulting hash value is completely unreproducible and impossible to generate from Another input is generated )
Add some data after the User-Agent string, and the attacker will not be able to test the User-Agent string by calculating md5 encoding for common agent values.
(2) Save this encoded string in the user's session data.
(3) Check this hash value every time a request is received from this user.
The code for this solution is as follows:
Copy the code. The code is as follows:
define ( 'ua_seed','webapp' ) ;
session_start () ;
if ( !isset($_SESSION['user_agent'] )){
$_SESSION['user_agent'] = md5 ( $_SERVER['HTTP_USER_AGENT'].ua_seed );
}else{
if ($_SESSION['user_agent'] != md5($_SERVER['HTTP_USER_AGENT'].ua_seed)){} }
?>
By causing some trouble for the attacker, even if the attacker obtains the session ID, he cannot destroy it, which can reduce the damage to the system

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
