캡슐화는 강력한 경계를 그리는 것입니다. 웹 브라우저에서는 사용자의 모바일 코드가 다른 모바일 코드에 의해 오용되지 않도록 하는 것을 의미합니다. 서버에서는 검증된 데이터와 검증되지 않은 데이터, 한 사용자의 데이터와 다른 사용자의 데이터, 데이터 사용자가 볼 수 있는 데이터와 볼 수 없는 데이터 간의 차별화를 의미할 수 있습니다.
anonymous
필드가 enabled:true
로 설정되어 있기 때문입니다.
...
kind: KubeletConfiguration
...
authentication:
anonymous:
enabled: true
...
Register
)는 이름 및 암호를 제공하여 계정을 등록하도록 사용자에게 묻는 웹 폼에서 액세스됩니다.
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
try
{
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", "");
}
}
return View(model);
}
RegisterModel
클래스는 다음과 같이 정의됩니다.
public class RegisterModel
{
[BindRequired]
[Display(Name = "User name")]
public string UserName { get; set; }
[BindRequired]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
public string ConfirmPassword { get; set; }
public Details Details { get; set; }
public RegisterModel()
{
Details = new Details();
}
}
Details
클래스는 다음과 같이 정의됩니다.
public class Details
{
public bool IsAdmin { get; set; }
...
}
Example 1
에 제공된 시나리오와 같이 공격자는 응용 프로그램을 탐색하고 RegisterModel
모델에 Details
속성이 있는지 발견할 수 있습니다. 이러한 경우 공격자는 속성에 할당된 현재 값을 덮어쓰려 할 수도 있습니다.
name=John&password=****&details.is_admin=true
<struts-config>
<form-beans>
<form-bean name="dynaUserForm"
type="org.apache.struts.action.DynaActionForm" >
<form-property name="type" type="java.lang.String" />
<form-property name="user" type="com.acme.common.User" />
</form-bean>
...
User
클래스는 다음으로 정의됩니다.
public class User {
private String name;
private String lastname;
private int age;
private Details details;
// Public Getters and Setters
...
}
Details
클래스는 다음으로 정의됩니다.
public class Details {
private boolean is_admin;
private int id;
private Date login_date;
// Public Getters and Setters
...
}
Example 1
에 제공된 시나리오와 같이 공격자는 응용 프로그램을 탐색하고 User
모델에 details
속성이 있는지 발견할 수 있습니다. 이러한 경우 공격자는 속성에 할당된 현재 값을 덮어쓰려 할 수도 있습니다.
type=free&user.name=John&user.lastname=Smith&age=22&details.is_admin=true
private final Logger logger =
Logger.getLogger(MyClass.class);
public class MyClass {
private final static Logger good =
Logger.getLogger(MyClass.class);
private final static Logger bad =
Logger.getLogger(MyClass.class);
private final static Logger ugly =
Logger.getLogger(MyClass.class);
...
}
Console.Out
또는 Console.Error
를 사용하면 프로그램의 동작을 모니터링하기가 어렵습니다.
public class MyClass {
...
Console.WriteLine("hello world");
...
}
Console.WriteLine()
을 사용하여 표준 출력에 대한 메시지를 쓰는 것을 그만두지 않습니다.Console.WriteLine
사용이 발견되면 이는 구조화된 로깅 시스템으로 옮겨가는 도중 실수한 것일 수 있습니다.os.Stdout
또는 os.Stderr
를 사용하면 프로그램의 동작을 모니터링하기가 어렵습니다.
...
func foo(){
fmt.Println("Hello World")
}
fmt.Println()
을 사용하여 표준 출력에 메시지를 쓰는 것을 그만두지 않습니다.os.Stdout
또는 os.Stderr
로깅은 구조화된 로깅 시스템으로 옮겨가는 도중 실수한 것일 수 있습니다.System.out
또는 System.err
를 사용하면 프로그램의 동작을 모니터링하기가 어렵습니다.
public class MyClass
...
System.out.println("hello world");
...
}
System.out.println()
을 사용하여 표준 출력에 메시지를 쓰는 것을 그만두지 않습니다.System.out
또는 System.err
사용이 발견되면 이는 구조화된 로깅 시스템으로 옮겨가는 도중 실수한 것일 수 있습니다.process.stdout
또는 process.stderr
를 사용하면 프로그램의 동작을 모니터링하기가 어렵습니다.
process.stdin.on('readable', function(){
var s = process.stdin.read();
if (s != null){
process.stdout.write(s);
}
});
process.stdout.write()
를 사용하여 표준 출력에 메시지를 쓰는 것을 그만두지 않습니다.process.stdout
또는 process.stderr
사용이 발견되면 이는 구조화된 로깅 시스템으로 옮겨가는 도중 실수한 것일 수 있습니다.print
또는 println
를 사용하면 프로그램의 동작을 모니터링하기가 어렵습니다.
class MyClass {
...
println("hello world")
...
}
}
print
또는 println
를 사용하여 표준 출력에 메시지를 쓰는 것을 그만두지 않습니다.
sys.stdout.write("hello world")
sys.stdout
또는 sys.stderr
사용이 발견되면 이는 구조화된 로깅 시스템으로 옮겨가는 도중 실수한 것일 수 있습니다.Kernel.puts
,Kernel.warn
또는 Kernel.printf
를 사용하면 프로그램의 동작을 모니터링하기가 어렵습니다.
...
puts "hello world"
...
Kernel.puts
을 사용하여 표준 출력에 메시지를 쓰는 것을 그만두지 않습니다.Kernel.puts
,Kernel.warn
또는 Kernel.printf
사용이 발견되면 이는 구조화된 로깅 시스템으로 옮겨가는 도중 실수한 것일 수 있습니다.Logger
클래스를 사용하지만 시스템 출력 스트림에 정보를 기록합니다.
require 'logger'
...
logger = Logger.new($stdout)
logger.info("hello world")
...
ERROR_CODE
필드가 final이 아니라 public 및 static으로 선언되었습니다.
public class MyClass
{
public static int ERROR_CODE = 100;
//...
}