웹 서비스 API가 있습니다. 일부 호출은 사용자가 제공 한 정보가있는 텍스트 필드를 포함하는 객체를 반환합니다. 설계 및 보안 관점에서 정보가 제공되지 않은 경우 해당 필드에서 null을 반환하는 단점은 무엇입니까? 빈 문자열 대신에 항상 빈 문자열을 리턴하는 명백한 이점이 있습니까? 아니면 클라이언트 코드가 널 (null)을 검사하지 않아도 됨으로써 API가 단순화되는 것입니까?웹 서비스 호출에서 null 값을 반환합니다.
답변
null을 반환하거나 빈 문자열을 반환하는 것과 관련된 보안 문제가 있다고 생각하지 않습니다.
정보가없는 입력란에 대해 null을 반환하는 것은 실제적인 단점이 없습니다. null이 나타내는 것의 종류입니다.
당신은
그것은 모두 당신이 빈 문자열에서와 같은 의미 다른 널 (null) 문자열 값을 치료 여부에 따라 달라집니다 (이 .NET입니다 가정)
string.IsNullOrEmpty()
를 사용하여 클라이언트 코드를 단순화 할 수 있습니다.
null 및 빈 문자열은 모두 해당 필드에 대한 데이터가 없음을 의미합니다. 그런 다음 빈 문자열을 확인하고 반환하지 않아도 클라이언트가 더 간단 해지지 않을 이유는 없습니다.
null은 null을 의미합니다. 거기에 고유 한 보안 문제가 없습니다.
웹 서비스는 공용 API이므로 모든 입력 데이터를 엄격하게 검사하고 잘못 구성된 입력이 발생해야합니다. 클라이언트 코드가 올바른 일을한다고 가정 할 수 없으며 (악의적으로 또는 다른 방식으로) 널 (null)을 보내지 않습니다.
그래서 빈 문자열이나 다른 센티널 값은 사용자가 입력 내용을 확인하지 못하게하고, 반드시 더 쉽게 사용할 수있는 것은 아닙니다. 의미 상 빈 문자열은 null이 아니며 비어 있습니다.
가치가 무엇입니까, .net SoapFormatter에 의해 생성 된 xml은 보통 오래된 것이 아니며 빈 문자열과 다릅니다. 그것은 사소한 예이지만 유익합니다. null을 보내면 데이터를 더 적게 보내고 이는 고려해야 할 사항 일 수 있습니다.
{
[WebMethod]
public MyClass HelloWorld()
{
MyClass val = new MyClass()
{
IsValid = false,
HelloString = "Hello World",
BlankString = "",
Nested = new NestedClass { Name = "Bob" }
};
return val;
}
}
public class MyClass
{
public bool IsValid { get; set; }
public string HelloString { get; set; }
public string BlankString { get; set; }
public string OtherString { get; set; }
public NestedClass Nested { get; set; }
public NestedClass NullNested { get; set; }
}
public class NestedClass
{
public string Name { get; set; }
}
은 다음 xml 응답을 산출합니다. OtherString
및 NullNested
이 응답에서 완전히 누락 된 점에 유의하십시오. 이는 BlankString
과 다릅니다.
<MyClass>
<IsValid>false</IsValid>
<HelloString>Hello World</HelloString>
<BlankString />
<Nested>
<Name>Bob</Name>
</Nested>
</MyClass>
짧은 답변 :는 웹 서비스에서 null을 사용하지 마십시오.
일반적으로 0 이상의 문자가없는 경우가 아니면 null 이상의 빈 문자열을 사용하는 것이 좋습니다. null을 "undefined"로만 사용하는 것을 선호합니다. 예를 들어 사용자가 입력 할 때 사용자가 필드를 입력하고 아무 것도 입력하지 않으면 빈 문자열이됩니다. 그러나 사용자가 필드를 건너 뛰면 null이 될 수 있습니다.
null에 대한 의미를 정의 할 때까지는 빈 문자열을 반환하고 String.IsNUllOrEmpty를 처리 측에서 사용하는 것이 유리합니다. 왜냐하면 미래의 지식 대신 null 및 공백이 동일해야하기 때문입니다.
그러나 웹 서비스가
, <element/>
의 차이 사이의 도구에서 실수의 공평한 분배보다 더 있었고 요소가 단순히 실종되는 점이다 특별한 트위스트를 가지고있다. 내가 모든 것을 통제하지 않으면 상호 운용성이 받아 들여지지 않을 것이라고 혼란스럽게 생각합니다.<element></element>
그래서 내가 표현할 필요가있는 null과 같은 개념이 있다면, 현재/현재 없음을 나타내는 별도의 부울 요소를 생성 할 것입니다.
개인적으로 빈 문자열 대신 null을 반환하는 것이 좋습니다. 데이터베이스에 null 값이있는 경우 해당 값을 반환하는 웹 서비스는 빈 문자열 대신 null을 반환하는 것이 이상적입니다.
그렇다면 어도비 플렉스와 같은 웹 서비스 클라이언트가 실제로 null을 사용할 수없는 문제가 발생했다. 클라이언트를 수정할 수없는 경우 빈 문자열을 전달해야 할 수도있다.
어느 경우에도 보안 문제가 발생하지 않습니다.
- 1. NotesSession.GetDataBase 메서드가 null 값을 반환합니다.
- 2. 웹 서비스 호출에서 웹 페이지로 리디렉션
- 3. null 필드가있는 객체를 반환하는 웹 서비스
- 4. JavaScript 쿠키는 IE6에서 null 값을 반환합니다.
- 5. 웹 서비스 호출에서 사용자 이름과 암호 사용
- 6. HttpDuplexBinding 웹 서비스 호출에서 ExecutionEngineException이 발생했습니다.
- 7. 웹 서비스 호출에서 세션에 읽기 전용으로 액세스합니까?
- 8. 때때로 null 데이터 셋을 반환하는 웹 서비스
- 9. PropertyInfo.GetValue (null, null)은 null을 반환합니다.
- 10. WCF에 게시 NULL 값을 보내는 서비스
- 11. IHttpHanlder는 null 세션을 반환합니다.
- 12. WCF 웹 서비스 데이터 멤버 기본값 null null
- 13. Null DateTime에 대한 웹 서비스 응답?
- 14. getElementId는 null 또는 undefined를 반환합니다.
- 15. getDeviceId() API는 항상 안드로이드 에뮬레이터에서 null 값을 반환합니다.
- 16. @ Url.Action은 후속 호출에서 다른 결과를 반환합니다.
- 17. getTypeParameters는 null TypeVariable 배열을 반환합니다.
- 18. 실패한 웹 서비스 호출에서 더 많은 진단 정보를 찾으려면 어떻게합니까?
- 19. Compact Framework 웹 서비스 호출에서 데이터 전달을 보장하는 방법은 무엇입니까?
- 20. 웹 서비스 호출에서 가끔씩 발생하는 이름 확인 오류
- 21. .net 웹 서비스 호출에서 클라이언트 인증서를 사용하는 예는 무엇입니까?
- 22. Fiddler를 사용하여 SSL 웹 서비스 호출에서 XML을 가져 오려고합니까?
- 23. 웹 서비스 호출에서 자동 인스턴스화 된 Delphi 객체를 해제해야합니까?
- 24. JSON 웹 서비스 호출에서 값으로 작은 따옴표를 보내는 방법
- 25. WP7에서 웹 서비스 호출
- 26. webservice 호출에서 다시 전달되는 XML에서 nil = "true"값을 확인하려면 어떻게해야합니까?
- 27. Windows 서비스 Null ReferenceException
- 28. C# 클라이언트에서 null 인수를받는 Java 웹 서비스 메서드
- 29. 안드로이드 서버에서 null 값을 부여
- 30. Oracle 데이터 소스가 null 연결을 반환합니다.