URL을 표시하는 HTML과 HTML 출력에 표시되는 ID와 같이 서버에서 나가는 모든 ID를 난독 화하려고합니다.Rails 앱에서 ID를 난독 화합니다.
인코딩 및 디코딩 방법이있는 간단한 Base62 lib를 작성했습니다. id의 인코딩 된 버전을 반환하고 디코드 된 params[:id]
으로 리소스를로드하도록 컨트롤러를 조정하기 위해 ActiveRecord의 id 메서드를 정의하거나 더 나은 방법으로 원하는 결과를 얻을 수 있습니다. 이제 id는 url에 base62로 인코딩되고 응답은 올바른 리소스를 표시합니다.
이제는 has_many
관계를 통해 정의 된 하위 리소스가로드되지 않음을 알게되었습니다. 예 : User
이라는 has_many
Post
이라는 레코드가 있습니다. User.find(1).posts
은 (는) user_id = 1
의 게시물이 있지만 비어 있습니다. 제 설명은 ActiveRecord가 self[:id]
과 비교하는 대신 user_id
의 Post
과 의id
의 User
을 겹쳐 쓰면서 비교해야한다는 것입니다. 그래서 기본적으로 이것은 나의 접근법을 쓸모 없게 만듭니다.
모델에 obfuscates_id
을 정의하고 나머지는 적절한 위치에서 모든 인코딩/디코딩을하고 서버에서 ID를 반환하지 못하도록하는 것과 같습니다.
사용할 수있는 보석이 있습니까? 아니면 이것을 수행하는 방법에 대한 힌트가 누군가 있습니까? 나는 이것을 처음 시도하지 않는다고 생각한다.
시간을 낭비 전반적인 보안을 개선하는 데 사용 된 수있는 시간을 낭비하고있다. 아니면 난독 화를위한 또 다른 이유가 있습니까? – LukeN
ID 난독 화는 보안 측정 IMHO가 아닙니다. 사이트에 등록 된 사용자 수 또는 게시물 수와 같은 ID에 포함 된 특정 정보 만 숨 깁니다. 이들을 간단한 base62로 인코딩 된 버전으로 대체해도 이러한 종류의 정보는 공개되지 않습니다. 나는 너무 많은 시간을 낭비하지 않을 것입니다. 그래서 모델에서 단순히 obfuscates_id를 호출하면 멋질 것입니다. – fphilipe
얼마나 많은 사용자 또는 게시물이 사이트에 있습니까? – Earlz