2013-05-04 4 views
1

사용자 A가 다른 사용자를 검색하고 볼 수있는 사이트가 있습니다. 사용자 A가 사용자 B를 말하면 사용자 B의 ID를 GET 변수로 전달합니다. 그런 다음 해당 ID를 내보기에서 사용하여 적절한 데이터를 표시합니다. 이 좋은 습관인가? 사용자 ID를 공개해야합니까?PHP에서 안전하게 데이터 전달

또한 사용자 A가 사용자 B의 프로필에 있으면 사용자 A에게 메시지를 보낼 수 있습니다. 사용자 B의 ID를 내 컨트롤러에 안전하게 전달하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

+1

사용자 ID는 일반적으로 대부분의 웹 사이트에 표시됩니다. stackoverflow하지만, 정말로 숨기고 싶다면, mod_rewrite를 시도하고, 그들의 이름이 그들의 사용자 ID로 재 작성되도록하십시오. –

+0

아이디를 사용하면 아무런 해가 없습니다. 당신은 쿠키 또는 세션을 사용하여 사용자 B의 ID를 전달할 수 있습니다. – SolidSnake

답변

0

이렇게하는 방법은 여러 가지가 있습니다.

일반적으로 이러한 사용 사례에 사용하는 한 가지 방법은 URL을 통과 할 때 사용자가 무작위로 일부 값을 변경할 수 없도록 의사 임의가있는 고유 한 해시 식별자를 만드는 것입니다. 다른 사용자의 프로필을 가져옵니다.

예. ID를 전달하면 다음과 같은 URL이 표시됩니다.

showProfile.php?id=1256 

1256에서 1257로 변경하면 다음 사용자가 표시 될 수 있습니다. 당신이 다음 하나를 얻기 위해 문자/숫자를 변경할 수 없도록

showProfile.php?id=u4n5l4534mnk43nl34n 

그리고 같은 해시가, 순서를 따르지 않는 :

당신이 충분히 랜덤 해시 문자열을 전달 치죠. 그것은 또한 당신이 사이트 그래서

+0

고마워, 나는 해싱을 고려하고 있었다. – user1543871

0

의 구성원 사이에 사용자 데이터 공유를 만드는 방법을 보안에 따라

, 내가 생각하고 그 사용자 B의 프로필에 사용자 A를 클릭하면 URL은 site.com/profile.php?id=24 음과 같이이되면? 사용자 B의 프로필이 24입니다. 그렇다면 아무런 문제가 없습니다. 어떤 시점에서 사용자의 프로필을 검색 할 때 데이터베이스에있는 내용 인 ID, 사용자 이름 또는 성을 반향합니다. 이드는 훌륭하지만 전문성이 필요하다면 htaccess의 도움으로 약간의 도움을 받아 사용자 이름을 사용자로 지정할 수도 있습니다. site.com/profile/john

따라서 간단히 말해서 echo 할 수있는 방법이 없습니다. 이미 데이터베이스에있는 각 프로파일에 대한 내용.

하지만 당신이 프로필 페이지에이 같은 것을 사용하는 경우가 mysql을 언급 한 것으로, 태그보고 :

$user = $_GET['id']; 
$query = mysql_query("SELECT * FROM USER WHERE id = '$user' "); 

음 ... 그 위험하고 귀하의 웹 사이트를 잎/데이터베이스 OPEN 공격. 위와 비슷한 것을 사용하는 경우 PDO를 사용해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 PDO를 사용하고있다. 내 DB의 유일한 고유 한 필드는 사용자의 전자 메일 및 ID입니다. 그래서 나는 이드가 최선의 선택이라고 생각합니까? – user1543871

+0

예, 귀하의 선택 인 id가 있다고 생각합니다. 그러나 대부분의 사이트에서 사용자 이름도 고유하므로 사용자가 직접 작성해야합니다.그러나 당신의 선택에 달려 있습니다. –

+0

감사합니다. 사용자 이름을 전혀 사용하지 않습니다. – user1543871

관련 문제