How to fix xpath?

xpath injection prevention
xpath injection impact
xquery injection example
xml/xpath injection (login form)
xpath injection hackerone
xml sql injection
xquery injection owasp
wasc 39 xpath injection

This is the xpath that i have to use: "//*[@id="zona-mijloc"]/div/table/tbody/tr[1]/td[1]/label/kbd"

String id = driver.findElement(By.xpath("//*[@id=\"zona-mijloc\"]div/table/tr[1]/td[1]/label/kbd")).getText();

That's the html code


You can select last element use last() as index:

  1. //*[@id='zona-mijloc']//tbody//tr[last()]//kbd
  2. (//*[@id='zona-mijloc']//kbd)[last()]

To get text in Selenium be sure the element is visible. You can wait for visibility of element using WebDriverWait:

WebDriverWait wait = new WebDriverWait(driver, 10)
String id = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='zona-mijloc']//tbody//tr[last()]//kbd"))).getText();

How to fix “XPath Injection” in c# asp.net?, Check this XPATH Injection[^]. They have briefly explain the mechanism. 5. 4 Simple steps to fix your XPath. Step 1: Open the webpage using a browser with an XPath tool (one that allows you to view the HTML and lookup an XPath query). XPath helper(a Chrome extension) is always recommended if you use Chrome. Step 2: Once you have the web page loaded, inspect the target element in the HTML. Step 3:


I can't see all of the HTML for the elements referenced in your XPath, but you could try simplifying the path as such:

String id = driver.findElement(By.xpath("//table/tr[1]/td[1]/label/kbd")).getText();

If this does not work for you, I recommend posting the full page HTML so that we can help you better.

IDS53-J. Prevent XPath Injection - Confluence Mobile, XPath injection can occur when data supplied to an XPath retrieval routine to details from this file with an XPath statement constructed dynamically from user input. Small change - shall we replace "login"/"login ID" in the intro example with  XPath Injection Defenses. Just like the techniques to avoid SQL injection, you need to use a parameterized XPath interface if one is available, or escape the user input to make it safe to include in a dynamically constructed query.


Xpath - .//label[@for='id16401488']/kbd Assuming there is no other match as same xpath in the html source code. If so use index of whichever /kbd you want.

CA3008: Review code for XPath injection vulnerabilities, How to fix violations. Some approaches to fixing XPath injection vulnerabilities include: Don't construct XPath queries from user input. Validate  Xpath doesn’t have the “check if part of space-separated list” operator, so this is the workaround . Expressions Steps and axes // ul / a[@id='link']


Please try this xpath and let me know how it goes.

//*[@id="zona-mijloc"]//div/table/tbody/tr/td/label/kbd

I am able to locate 3 elements with the above xpath. If wanted to capture text of all 3 elements, please try the below code.Else it will get the fist elements text.

Java Code:
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SW58291360 {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "./libs/chromedriver 4");
         WebDriver driver=new ChromeDriver();
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://www.pbinfo.ro/?pagina=judge-board&id_problema=3120&user=IosifHriscu");
        List<WebElement> ids=driver.findElements(By.xpath("//*[@id='zona-mijloc']//div/table/tbody/tr/td/label/kbd"));
        for(int i=0;i<ids.size();i++)
        {
            System.out.println(ids.get(i).getText());
        }
        driver.quit();
    }

}
Python code:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('/usr/local/bin/chromedriver')  # Optional argument, if not specified will search path.
driver.implicitly_wait(15)    
driver.get("https://www.pbinfo.ro/?pagina=judge-board&id_problema=3120&user=IosifHriscu");

WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "//*[@id='zona-mijloc']//div/table/tbody/tr/td/label/kbd"))) #Wait for specific element 

table_rows= driver.find_elements(By.XPATH,"//*[@id='zona-mijloc']//div/table/tbody/tr/td/label/kbd")

for rows in table_rows:
    print rows.text

driver.quit()
output
#16401488
#16401481
#16401478

XPATH Injection Software Attack, So, we need to replace any ' characters in this input with the XML encoded version of that character, which is “'”. VB: Dim FindUserXPath as String FindUserXPath  Podcast: We speak with Matt Cutts about leading the United States Digital Services and the role software can play in government. Listen now.


The Web Application Security Consortium / XPath Injection, The syntax of XPath bears some resemblance to an SQL query, and indeed, it is possible to form SQL-like queries on an XML document using XPath. ColdFusion's xmlSearch() function takes a node and an XPath value. That XPath value adheres to the same rules thats we discussed above. And, if you want to use the "in the middle of a path" concept, you have to start your XPath value with a "." (period). So, given some sub-node, "x", the XPath: //y


XPath injection - C# queries, expression from user-controlled sources is vulnerable to insertion of malicious code by the user. ID: cs/xml/xpath-injection. Kind: path-problem. Severity: error. Example Of XPath Injection We will take a look now how it works when for the example a SOAP message delivers a customer’s ID. It sends it to the app’s logic and in that case, it is querying the XML doc with all of the customer’s information.


XPath Syntax, XPath uses path expressions to select nodes or node-sets in an XML document. The node is To solve this problem in IE, set the SelectionLanguage to XPath:. HI How to prevent XPath injection attacks in C#. Hello, Simply sanitize the user inputs. Check the below MSDN link for more details,