PHP 세션 ID는 얼마나 독특한가요?
PHPPHP 세션 ID는 얼마나 독특한가요?
PHP 세션 ID는 얼마나 독특한가요? 나는 내가 읽은 여러 가지 것들로부터 동일한 세션 ID를 결코 얻지 못하는 두 명의 사용자에게 의존해서는 안된다는 인상을 받았다. GUID가 아닌가요?
해결법
-
==============================
1.Session_id는 실제로 복제 될 수 있지만 확률은 매우 낮습니다. 공정한 트래픽이있는 웹 사이트가있는 경우 웹 사이트 생활이 한 번 일어날 수 있으며 한 세션에 대해 한 명의 사용자를 괴롭 히게됩니다.
Session_id는 실제로 복제 될 수 있지만 확률은 매우 낮습니다. 공정한 트래픽이있는 웹 사이트가있는 경우 웹 사이트 생활이 한 번 일어날 수 있으며 한 세션에 대해 한 명의 사용자를 괴롭 히게됩니다.
이것은 매우 높은 트래픽 웹 사이트 또는 은행 산업을위한 서비스를 구축하지 않으면 신경 쓸 가치가 없습니다.
-
==============================
2.선적 된 것은별로 독특하지 않습니다. 기본 설정에서는 gettimeofday (굉장히 독특하지는 않음)의 결과를 포함하여 여러 가지 해시 결과이지만 걱정이된다면 / dev / urandom에서 엔트로피를 그리도록 설정해야합니다.
선적 된 것은별로 독특하지 않습니다. 기본 설정에서는 gettimeofday (굉장히 독특하지는 않음)의 결과를 포함하여 여러 가지 해시 결과이지만 걱정이된다면 / dev / urandom에서 엔트로피를 그리도록 설정해야합니다.
ini_set("session.entropy_file", "/dev/urandom"); ini_set("session.entropy_length", "512");
그들이 사용하고있는 실제 알고리즘에 대한 코드에서 "php_session_create_id"를 검색하십시오.
추가 편집 : pid가 시드 (seed) 한 DFA 난수 생성기가 있으며 시간은 usec입니다. 보안 관점에서 확고한 고유성 조건이 아닙니다. 위의 엔트로피 설정을 사용하십시오.
최신 정보:
-
==============================
3.ID 생성 방식을 사용자 정의하려면 대체 해시 생성 기능을 설치하십시오 (기본적으로 MD5를 통해 생성 된 128 비트 번호). http://www.php.net/manual/en/session.configuration.php#ini.session.hash-function을 참조하십시오.
ID 생성 방식을 사용자 정의하려면 대체 해시 생성 기능을 설치하십시오 (기본적으로 MD5를 통해 생성 된 128 비트 번호). http://www.php.net/manual/en/session.configuration.php#ini.session.hash-function을 참조하십시오.
PHP 세션에 대한 자세한 내용은 http://shiflett.org/articles/the-truth-about-sessions에서 세션 고정 및 하이재킹에 대한 다른 기사로 연결되는 훌륭한 기사를 참조하십시오.
-
==============================
4.PHP가 세션 ID를 생성하는 방법을 알고 싶다면 기본적으로 Github의 소스 코드를 확인하십시오. 이것은 확실히 무작위가 아니며 이러한 성분의 해시 (기본값 : md5)를 기반으로합니다 (코드 스 니펫의 310 행 참조).
PHP가 세션 ID를 생성하는 방법을 알고 싶다면 기본적으로 Github의 소스 코드를 확인하십시오. 이것은 확실히 무작위가 아니며 이러한 성분의 해시 (기본값 : md5)를 기반으로합니다 (코드 스 니펫의 310 행 참조).
OS가 무작위 소스를 사용할 수있는 경우 세션 ID가되기 위해 생성 된 ID의 강도는 높습니다 (/ dev / urandom 및 다른 OS 무작위 소스는 (일반적으로 암호로 안전한 PRNG입니다). 그러나 그렇지 않다면 만족 스럽습니다.
세션 식별 생성의 목표는 다음과 같습니다.
이것은 세션 생성에 대한 PHP의 접근 방식에 의해 달성됩니다.
유일성을 절대적으로 보장 할 수는 없지만 일반적으로 우려 할 가치가없는 동일한 해시를 두 번 치는 확률이 두 배입니다.
-
==============================
5.session_id의 크기 seesion_id가 균일하게 분포되어 있고 크기가 128 비트라고 가정합니다. 행성에있는 모든 사람이 하루에 한 번씩 1000 년 동안 계속 새로운 세션을 가지고 로그인한다고 가정합니다.
session_id의 크기 seesion_id가 균일하게 분포되어 있고 크기가 128 비트라고 가정합니다. 행성에있는 모든 사람이 하루에 한 번씩 1000 년 동안 계속 새로운 세션을 가지고 로그인한다고 가정합니다.
num_sesion_ids = 1000*365.25 *7*10**9 < 2**36 collission_prob < 1 - (1-1/2**82)**(2**36) ≈ 1 - e**-(1/2**46) ≈ 1/2**46
따라서 하나 이상의 충돌 확률은 7 억 개 중 1 개 미만입니다. 따라서 128 비트 크기의 session_id가 충분히 커야합니다. 다른 주석에서 언급했듯이, session_manager는 새로운 session_id가 이미 존재하지 않는지 확인할 수도 있습니다.
임의성 따라서 큰 문제는 session_id :가 좋은 의사 난수로 생성되었는지 여부입니다. 분명히 할 수는 없지만 잘 알려진 자주 사용하는 표준 솔루션을 사용하는 것이 좋습니다 (이미 수행 한 것처럼).
검사로 인해 충돌이 방지 되더라도 session_id의 무작위성 및 크기가 중요하므로 해커는 어쨌든 자격있는 추측을 수행하고 큰 확률로 활성 세션 ID를 찾습니다.
-
==============================
6.나는 이것에 대한 확인을 찾지 못했지만 세션 ID가 이미 존재하는지 그 php가 그 id로 생성하기 전에 존재하는지 확인합니다.
나는 이것에 대한 확인을 찾지 못했지만 세션 ID가 이미 존재하는지 그 php가 그 id로 생성하기 전에 존재하는지 확인합니다.
사람들이 세션 하이재킹 문제에 대해 걱정하는 것은 누군가가 활성 사용자의 세션 ID를 알아내는 것입니다. 이것은 많은면에서 예방할 수 있습니다. php.net에서이 페이지를 볼 수있는 자세한 정보와 세션 고정에 대한이 백서
-
==============================
7.세션 ID는 GUID가 아니지만 두 명의 사용자가 서버 측에 저장된 것과 동일한 세션 ID를 가져 오면 안됩니다.
세션 ID는 GUID가 아니지만 두 명의 사용자가 서버 측에 저장된 것과 동일한 세션 ID를 가져 오면 안됩니다.
-
==============================
8.
<?php session_start(); $_SESSION['username']="username"; ?> <!DOCTYPE html> <html> <head> <title>Update</title> </head> <body> <table border="2"> <tr> <th>Username</th> <th>Email</th> <th>Edit</th> </tr> <?php $conn=mysqli_connect("localhost","root","","telephasic"); $q2="select * from register where username = '".$_SESSION['username']."'"; $run=mysqli_query($conn, $q2); while($row=mysqli_fetch_array($run)) { $name=$row[1]; $email=$row[2]; ?> <tr> <td><?php echo $name; ?></td> <td><?php echo $email; ?></td> <td><a href="edit.php"> Edit </a></td> </tr> <?php } ?> </table> </body>
사용자 이름이 다르거 나 고유하면 세션에이 코드를 사용할 수 있습니다.
from https://stackoverflow.com/questions/138670/how-unique-is-the-php-session-id by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP 독서 shell_exec 라이브 출력 (0) | 2018.09.19 |
---|---|
쿠키가없는 PHP 세션 (0) | 2018.09.19 |
전자 메일 용 PHP에서 HTML을 일반 텍스트로 변환 (0) | 2018.09.19 |
배열 목록에서 배열 트리 만들기 (0) | 2018.09.19 |
.htaccess를 사용하여 디렉토리 (모든 하위 디렉토리 포함)에서 PHP를 비활성화합니다. (0) | 2018.09.19 |