docs: use sha256 for exposeFunction everywhere (#6805)

This commit is contained in:
Max Schmitt 2021-05-31 15:47:14 -07:00 committed by GitHub
parent 329fdb18ff
commit c8c77e4df0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 46 deletions

View file

@ -624,7 +624,7 @@ If the [`param: callback`] returns a [Promise], it will be awaited.
See [`method: Page.exposeFunction`] for page-only version.
An example of adding an `md5` function to all pages in the context:
An example of adding a `sha256` function to all pages in the context:
```js
const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'.
@ -633,12 +633,12 @@ const crypto = require('crypto');
(async () => {
const browser = await webkit.launch({ headless: false });
const context = await browser.newContext();
await context.exposeFunction('md5', text => crypto.createHash('md5').update(text).digest('hex'));
await context.exposeFunction('sha256', text => crypto.createHash('sha256').update(text).digest('hex'));
const page = await context.newPage();
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.md5('PLAYWRIGHT');
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
@ -661,11 +661,11 @@ public class Example {
try (Playwright playwright = Playwright.create()) {
BrowserType webkit = playwright.webkit()
Browser browser = webkit.launch(new BrowserType.LaunchOptions().setHeadless(false));
context.exposeFunction("sha1", args -> {
context.exposeFunction("sha256", args -> {
String text = (String) args[0];
MessageDigest crypto;
try {
crypto = MessageDigest.getInstance("SHA-1");
crypto = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
return null;
}
@ -675,7 +675,7 @@ public class Example {
Page page = context.newPage();
page.setContent("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
@ -691,8 +691,8 @@ import asyncio
import hashlib
from playwright.async_api import async_playwright
async def sha1(text):
m = hashlib.sha1()
def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
@ -701,12 +701,12 @@ async def run(playwright):
webkit = playwright.webkit
browser = await webkit.launch(headless=False)
context = await browser.new_context()
await context.expose_function("sha1", sha1)
await context.expose_function("sha256", sha256)
page = await context.new_page()
await page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
@ -724,8 +724,8 @@ asyncio.run(main())
import hashlib
from playwright.sync_api import sync_playwright
def sha1(text):
m = hashlib.sha1()
def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
@ -734,13 +734,12 @@ def run(playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
context.expose_function("sha1", sha1)
context.expose_function("sha256", sha256)
page = context.new_page()
page.expose_function("sha1", sha1)
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
@ -760,24 +759,22 @@ using System.Threading.Tasks;
class BrowserContextExamples
{
public static async Task AddMd5FunctionToAllPagesInContext()
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var context = await browser.NewContextAsync();
// NOTE: md5 is inherently insecure, and we strongly discourage using
// this in production in any shape or form
await context.ExposeFunctionAsync("sha1", (string input) =>
await context.ExposeFunctionAsync("sha256", (string input) =>
{
return Convert.ToBase64String(
MD5.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
});
var page = await context.NewPageAsync();
await page.SetContentAsync("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +

View file

@ -1550,7 +1550,7 @@ See [`method: BrowserContext.exposeFunction`] for context-wide exposed function.
Functions installed via [`method: Page.exposeFunction`] survive navigations.
:::
An example of adding an `sha1` function to the page:
An example of adding a `sha256` function to the page:
```js
const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'.
@ -1559,11 +1559,11 @@ const crypto = require('crypto');
(async () => {
const browser = await webkit.launch({ headless: false });
const page = await browser.newPage();
await page.exposeFunction('sha1', text => crypto.createHash('sha1').update(text).digest('hex'));
await page.exposeFunction('sha256', text => crypto.createHash('sha256').update(text).digest('hex'));
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
@ -1587,11 +1587,11 @@ public class Example {
BrowserType webkit = playwright.webkit();
Browser browser = webkit.launch({ headless: false });
Page page = browser.newPage();
page.exposeFunction("sha1", args -> {
page.exposeFunction("sha256", args -> {
String text = (String) args[0];
MessageDigest crypto;
try {
crypto = MessageDigest.getInstance("SHA-1");
crypto = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
return null;
}
@ -1600,7 +1600,7 @@ public class Example {
});
page.setContent("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
@ -1616,8 +1616,8 @@ import asyncio
import hashlib
from playwright.async_api import async_playwright
async def sha1(text):
m = hashlib.sha1()
def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
@ -1626,11 +1626,11 @@ async def run(playwright):
webkit = playwright.webkit
browser = await webkit.launch(headless=False)
page = await browser.new_page()
await page.expose_function("sha1", sha1)
await page.expose_function("sha256", sha256)
await page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
@ -1648,8 +1648,8 @@ asyncio.run(main())
import hashlib
from playwright.sync_api import sync_playwright
def sha1(text):
m = hashlib.sha1()
def sha256(text):
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
@ -1658,11 +1658,11 @@ def run(playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
page = browser.new_page()
page.expose_function("sha1", sha1)
page.expose_function("sha256", sha256)
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
@ -1691,17 +1691,15 @@ class PageExamples
});
var page = await browser.NewPageAsync();
// NOTE: md5 is inherently insecure, and we strongly discourage using
// this in production in any shape or form
await page.ExposeFunctionAsync("sha1", (string input) =>
await page.ExposeFunctionAsync("sha256", (string input) =>
{
return Convert.ToBase64String(
MD5.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
});
await page.SetContentAsync("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +

12
types/types.d.ts vendored
View file

@ -1711,7 +1711,7 @@ export interface Page {
* [page.exposeFunction(name, callback)](https://playwright.dev/docs/api/class-page#pageexposefunctionname-callback)
* survive navigations.
*
* An example of adding an `sha1` function to the page:
* An example of adding a `sha256` function to the page:
*
* ```js
* const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'.
@ -1720,11 +1720,11 @@ export interface Page {
* (async () => {
* const browser = await webkit.launch({ headless: false });
* const page = await browser.newPage();
* await page.exposeFunction('sha1', text => crypto.createHash('sha1').update(text).digest('hex'));
* await page.exposeFunction('sha256', text => crypto.createHash('sha256').update(text).digest('hex'));
* await page.setContent(`
* <script>
* async function onClick() {
* document.querySelector('div').textContent = await window.sha1('PLAYWRIGHT');
* document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
* }
* </script>
* <button onclick="onClick()">Click me</button>
@ -5330,7 +5330,7 @@ export interface BrowserContext {
* See [page.exposeFunction(name, callback)](https://playwright.dev/docs/api/class-page#pageexposefunctionname-callback)
* for page-only version.
*
* An example of adding an `md5` function to all pages in the context:
* An example of adding a `sha256` function to all pages in the context:
*
* ```js
* const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'.
@ -5339,12 +5339,12 @@ export interface BrowserContext {
* (async () => {
* const browser = await webkit.launch({ headless: false });
* const context = await browser.newContext();
* await context.exposeFunction('md5', text => crypto.createHash('md5').update(text).digest('hex'));
* await context.exposeFunction('sha256', text => crypto.createHash('sha256').update(text).digest('hex'));
* const page = await context.newPage();
* await page.setContent(`
* <script>
* async function onClick() {
* document.querySelector('div').textContent = await window.md5('PLAYWRIGHT');
* document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
* }
* </script>
* <button onclick="onClick()">Click me</button>