【의견 모집】신발상? 양식 보안 정보
예를 들어 일반적인 로그인 양식은 이런 느낌이죠?
index.php
<?php
mb_internal_encoding("utf-8");
@session_start();
if (isset($_SESSION['login'])&&$_SESSION['login']=="login") {
echo <<< EOM
ログイン
<form action="./logout.php" method="post">
<input type="submit" value="ログアウト"></input>
</form>
EOM;
}else{
echo <<< EOM
<form action="./login.php" method="post">
<label>ID</label>
<input name="username"></input>
<label>PW</label>
<input name="userid"></input>
<input type="submit" value="ログイン"></input>
</form>
EOM;
}
?>
login.php
<?php
mb_internal_encoding("utf-8");
@session_start();
if(isset($_POST['username'])&&
isset($_POST['userid'])&&
$_POST['username']==="admin"&&
$_POST['userid']==="root"){
$_SESSION['login'] = "login";
}
header('location:./');
?>
표시하면 이런 느낌
이것은 ID(username)에 admin, PW(userid)에 root라고 넣으면 로그인할 수 있습니다.
그러나 이것이라면 사전 공격 등으로 쉽게 돌파 할 수 있습니다.
그래서 login.php를 이렇게 바꿉니다.
login.php
<?php
mb_internal_encoding("utf-8");
@session_start();
if(isset($_POST['username'])&&
isset($_POST['userid'])&&
$_POST['username']==="admin"&&
$_POST['userid']==="root"&&
$_POST['pass']==="pass"){
$_SESSION['login'] = "login";
}
header('location:./');
?>
한 줄 추가했지만 테이블의 양식에 나타나지 않는 값 pass를 검사하고 있습니다. 이것에 들어가기 위해서는 index.php를 브라우저를 표시한 후, 검증 툴등으로 pass 입력용의 input를 추가해 줄 필요가 있습니다.
간단합니다만, 원래 그 추가하는 룰을 모르지 않으면 안되는 일과 name와 값을 모르면 사전 공격으로 돌파되지 않는 폼이 생겼다고 생각합니다. 예를 들어 추가하는 input의 수를 늘리거나, type="hidden"로 외형을 위장하면 더욱 견고해져 가는 것이 아닐까요.
자신의 지식이라면 이 방법은 들은 적이 없습니다만, 이미 이름이 붙어 있거나 약점이 있거나 하는 것입니까··.
가짜 로그인 사이트가 만들어지면 안됩니다.
Reference
이 문제에 관하여(【의견 모집】신발상? 양식 보안 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ShoyoFILMS/items/0dd7d929411cc8b494c2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)