2011-09-30 5 views
0

일부 AJAX 호출을 사용하기 위해 우리는 종종 일부 입력 유형 = "숨김"을 사용합니다. 그러나이 값은 쉽게 변경할 수 있습니다. 그래서 AJAX에 날짜를 보내거나, 사용자가 사용할 수 있거나, 사용자가 변경할 수없는 것보다 빌트인 레일 기능입니까?레일 안전한 방법으로 아약스에 데이터를 제공하는 방법?

내 현재 레일즈 애플리케이션에서 컨트롤러의 모든 악의적 인 행동을 버리기 위해 필터를 사용하고 있습니다. 공용 API를 구축하지 않기 때문에 더 강력한 검사가 필요하지 않습니다.

그러나 예를 들어, 일부 입력을 숨겨서 일부 데이터를 표시하는 apotomo 위젯이 있습니다. 그러나이를 변경하면 다른 데이터 세트에 액세스 할 수 있습니다. 제 경우에는 문제가 아닙니다. 모든 사용자가 이러한 데이터 세트에 액세스 할 권리가 있습니다.

하지만 보안 방법으로 아약스 호출에 데이터를 제공하는 방법이 있습니까? 또는 유일한 보안은 권리 관리에 관한 것입니까?

답변

1

사용자가 입력하는 모든 입력은 제어 할 수 없으므로 안전하지 않습니다. 사용자는 웹 브라우저가 필요하지 않지만 조작 된 데이터를 보내려면 다른 프로그램 (예 : curl 또는 wget)을 사용할 수 있습니다.

당신이 말한 것처럼 화이트리스트를 사용하면 (블랙리스트가 아닌 모든 나쁜 점을 알 수 있지만 모든 좋은 점을 알 수 있습니다!) 시작하는 좋은 방법입니다.

hidden 필드가 변경되지 않았는지 확인하려면 고정 된 암호를 사용하여 서버 측에서 계산되는 일종의 체크섬을 사용할 수 있습니다. 이 비밀은 방문자에게 노출되어서는 안됩니다! 이 네 가지 숨겨진 필드 (field_1..3, 해시) 양식에 도착하면

hash = md5(field_1 + field_2 + field_3 + my_secret) 

당신은 해시를 계산하고 PARAMS과 비교 할 수 있습니다 field_3에 field_1하지 않았는지 확인하기 위해 [해시] 변경되었습니다.

+0

나에게 잘 보인다. 감사. – Perello

관련 문제