public class AttackName {
/**
* @param args the command line arguments
*/
DatacenterBroker broker;
String fname, lname1, card;
public DatacenterBroker attack(String path, String fname, String lname) {
try {
String filepath = path;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(filepath);
doc.getDocumentElement().normalize();
System.out.println("attacker doing attack");
System.out.println("xpath query #1");
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expr = xpath.compile("//employee[firstname/text()='"+fname+"']/credit_card/text()");
Object res = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) res;
for (int i = 0; i < nodes.getLength(); i++) {
card = nodes.item(i).getNodeValue();
}
XPathFactory xpf1 = XPathFactory.newInstance();
XPath xpath1 = xpf1.newXPath();
XPathExpression expr1 = xpath1.compile("//employee[firstname/text()='"+fname+"']/lastname/text()");
Object res1 = expr1.evaluate(doc, XPathConstants.NODESET);
NodeList nodes1 = (NodeList) res1;
for (int i = 0; i < nodes1.getLength(); i++) {
lname1 = nodes1.item(i).getNodeValue();
}
System.out.println("attacker doing attack");
System.out.println("xpath query #2");
xpf = XPathFactory.newInstance();
xpath = xpf.newXPath();
expr = xpath.compile("//employee[firstname/text()='efg' ]/credit_card/text()");
res = expr.evaluate(doc, XPathConstants.NODESET);
nodes = (NodeList) res;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
System.out.println("attacker doing attack");
System.out.println("xpath query #3");
xpf = XPathFactory.newInstance();
xpath = xpf.newXPath();
expr = xpath.compile("//employee[firstname/text()='"+fname+"' and lastname/text()='']/credit_card/text()");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return broker;
}
public String getLname(){
return lname1;
}
public String getCard(){
return card;
}
}
Я делаю атаку инъекции xpath? У меня есть код со мной. Я хочу понять код. Остальное в порядке. но я хочу знать, что в этом коде означает строка String getLname()
и String getcard()
?Что означает String getname()?
благодарит заранее.
Castila эти геттеры выбирают lname и fname? и нужно ли иметь сеттеры в том же классе – Gungun
проверить мое редактирование, а) они не собираются, они делают lname и карту видимыми для других участников вашего проекта в разных пакетах. b) вам нужно только поставить «сеттеры», если вы хотите, чтобы другие классы могли изменять ваши атрибуты. –
thanku so much ..... :) – Gungun