Cod*_*roc 7 java vaadin vaadin7
字符串容易受到密码值的影响.我注意到Vaadin PasswordField操纵密码为String.
以下是默认构造函数PasswordField,
public PasswordField() {
setValue("");
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
PasswordField在Vaadin 使用是否安全?TL; DR Vaadin PasswordField很简单TextField.输入隐藏在客户端,服务器端以明文形式传输.
虽然您可以使用getConvertedValue()和setConvertedValue(Object value)获取/设置您自己类型的值.请注意,您必须先设置setConverter(Converter<T,?> converter)之前使用它.
这里有一个如何正确使用对话的示例:为String创建自己的转换器 - MyType转换
完整解释
Vaadin TextField,PasswordField并且TextArea是所有的孩子AbstractField<String>.
详细地:
java.lang.Object
|_ com.vaadin.server.AbstractClientConnector
|_ com.vaadin.ui.AbstractComponent
|_ com.vaadin.ui.AbstractField<java.lang.String>
|_ com.vaadin.ui.AbstractTextField
Run Code Online (Sandbox Code Playgroud)
PasswordField与工作String,因为它的父母,否则就应该已经实现AbstractField<char[]>.
此外,PasswordFieldVaadin Docs的部分明确指出:
您应该注意,
PasswordField隐藏输入仅来自"过肩"目视观察.除非使用安全连接(例如HTTPS)对服务器连接进行加密,否则输入将以明文形式传输,并且可能被对网络进行低级访问的任何人拦截.此外,通过利用浏览器中的JavaScript执行安全漏洞,可以拦截拦截浏览器中输入的网络钓鱼攻击.
虽然 AbstractField<T>有getConvertedValue()和setConvertedValue(Object value)哪个允许获得/设置Object您喜欢的值.请注意,在使用之前,您需要进行设置setConverter(Converter<T,?> converter).
这里有一个如何正确使用对话的示例:为String创建自己的转换器 - MyType转换
简而言之,这个例子:
Name是一个简单的POJO与firstName和lastName领域,他们的getter/setter.
转换器类
public class StringToNameConverter implements Converter<String, Name> {
public Name convertToModel(String text, Locale locale) {
String[] parts = text.split(" ");
return new Name(parts[0], parts[1]);
}
public String convertToPresentation(Name name, Locale locale)
throws ConversionException {
return name.getFirstName() + " " + name.getLastName();
}
public Class<Name> getModelType() {
return Name.class;
}
public Class<String> getPresentationType() {
return String.class;
}
}
Run Code Online (Sandbox Code Playgroud)
主要课程
Name name = new Name("Rudolph", "Reindeer");
final TextField textField = new TextField("Name");
textField.setConverter(new StringToNameConverter());
textField.setConvertedValue(name);
addComponent(textField);
addComponent(new Button("Submit value", new ClickListener() {
public void buttonClick(ClickEvent event) {
Name name = (Name) textField.getConvertedValue();
}
}));
Run Code Online (Sandbox Code Playgroud)
完整来源
com.vaadin.ui.PasswordFieldcom.vaadin.ui.TextFieldcom.vaadin.ui.TextAreacom.vaadin.ui.AbstractField<T>com.vaadin.ui.AbstractField<T>#getConvertedValue()com.vaadin.ui.AbstractField<T>#setConvertedValue(Object value)com.vaadin.ui.AbstractField<T>#setConverter(Converter<T,?> converter)TextFieldPasswordField