小编Joã*_*ira的帖子

带有GET属性的PHP include()(包括file.php?q = 1)

我想要include()一个位于我的服务器上的php文件,带有额外的GET属性.但它不会起作用:

include('search.php?q=1');
Run Code Online (Sandbox Code Playgroud)

它给出的错误:

PHP Warning:  include(): Failed opening './search.php?q=1' for inclusion
Run Code Online (Sandbox Code Playgroud)

似乎它试图打开一个名为'search.php?q = 1'的文件而不是打开'search.php'文件并向其发送GET属性.

*请注意,如果我不添加任何GET属性,它确实有效:

include('search.php');
Run Code Online (Sandbox Code Playgroud)

php get include

21
推荐指数
2
解决办法
5万
查看次数

如何将文件保存到 Android Q (API 29) 上的公共(外部)存储?

我一直在使用外部存储来保存不同类型的文件。该文件需要对用户可见。现在从 Android Q 开始,该方法getExternalStoragePublicDirectory()已被弃用getExternalStoragePublicDirectory(docs)

我使用了以下代码:

File externalFilesDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "DirectoryName");
Run Code Online (Sandbox Code Playgroud)

是否有另一种方法来保存用户可见的文件?

java android file-storage

18
推荐指数
2
解决办法
9189
查看次数

打印php脚本输出到文件

PHP中是否有本机函数或函数集允许我将echophp文件输出打印到文件中.

例如,代码将生成需要放入.html文件的HTML DOM,然后显示为静态页面.

php

16
推荐指数
1
解决办法
4万
查看次数

命令“npm update”与包“npm-check-updates”

该命令和npm-check-updatesnpm update包有什么区别?使用后者是否完全安全?

执行后似乎npm update并不是所有的包都被更新,因此它看起来不完整。许多其他流行的 SO 答案都提到首先使用先前的命令,然后使用后者,但我仍然不明白后者做了什么而先验命令没有。

npm-update

11
推荐指数
2
解决办法
1万
查看次数

如何在node.js中生成一个nonce?

我需要生成一个nonce(仅生成一次的数字)来删除CSP规则'unsafe-inline'和脚本的所有可信URL,从而提高CSP分数.因此我需要在HTML中

<script nonce="{{{nonce}}}" src="http://example.com/file.js">
Run Code Online (Sandbox Code Playgroud)

我知道nonce必须是唯一的,计算方法几乎不可能预测,它应该至少有128位(因此是16字节),并在base64中编码.因此这是正确的node.js吗?

const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('base64');
Run Code Online (Sandbox Code Playgroud)

node.js nonce content-security-policy

10
推荐指数
2
解决办法
2655
查看次数

JQuery 3.1.1违反了CSP指令

我正在使用JQuery 3.1.1版,我正在尝试在我的网页上实现内容安全策略指令.

我收到以下错误:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"script-src'self''nonce-c20t41c7-73c6-4bf9-fde8-24a7b35t5f71'".要么是'unsafe-inline'关键字,哈希('sha256-KAcpKskREkEQf5B3mhDTonpPg34XnzaUC5IoBrOUrwY ='),要么是nonce('nonce -...')来启用内联执行.

该错误发生在主jquery.js脚本文件的第82行.这一行的内容是:

doc.head.appendChild( script ).parentNode.removeChild( script );
Run Code Online (Sandbox Code Playgroud)

基本上,它会向DOM添加内联脚本标记,这违反了CSP.

我不想用'unsafe-inline'.有没有其他方法来规避这个错误?

正如您在CSP违规中看到的那样,我正在使用CSP级别2(nonce),但它会被忽略.在附加脚本标记时,是否有可能(某些方式)通知jQuery使用此nonce?


更新:这是HTML的样子(使用Express模板作为nonce)

<script nonce="<%=nonce%>" type="text/javascript" src="jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)

呈现HTML后,脚本标记上的nonce属性与服务器发送的CSP nonce指令匹配.


更新:它确实适用于普通的JavaScript

<script nonce="<%=nonce%>" type="text/javascript">
        var userEmail = "<%=user.user.email%>";
</script>
Run Code Online (Sandbox Code Playgroud)

如果没有nonce属性,此脚本标记将违反CSP指令.

jquery content-security-policy

9
推荐指数
1
解决办法
4244
查看次数

在Javascript中声明空对象属性的简写,有没有?

我需要在我的脚本中声明很多对象属性,我想知道是否有任何方法可以缩短它:

Core.registry.taskItemSelected;
Core.registry.taskItemSelected.id;
Core.registry.taskItemSelected.name;
Core.registry.taskItemSelected.parent;
Core.registry.taskItemSelected.summary;
Core.registry.taskItemSelected.description;
Run Code Online (Sandbox Code Playgroud)

javascript properties object

8
推荐指数
1
解决办法
2万
查看次数

示例jquery获取兄弟的索引/位置

假设我有以下html

<ul>
  <li id="a">a</li>
  <li id="b">b</li>
  <li id="c">c</li>
</ul>
<ul>
  <li id="d">d</li>
  <li id="e">e</li>
  <li id="f">f</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如果我用jQuery的抢项目$('#e'),我怎么确定的位置或位置/指数e相对于它的兄弟姐妹df?换句话说,我期望返回值1(如果基于零的索引)或2(如果一个基础索引),因为它是ul列表中的第二个元素.

javascript indexing jquery

8
推荐指数
2
解决办法
6205
查看次数

适用于移动设备的HTML <input type ="number">的最佳设置

我一直在阅读许多其他问题,例如[1] [2] [3],但问题仍然存在.

我需要找到"最干净"的方式来input获得移动设备的HTML 并尊重所有这三个规则:

  1. 主要适用于数字,整数或浮点数
  2. 显示移动设备的数字小键盘,适用于Android版Chrome和适用于iOS的Safari,没有奇怪的额外按键

    在此输入图像描述

  3. 完全尊重HTML5规则(由W3验证器测试)




我试过了什么?

我一直在讨论这些解决方案,这两个主题都没有累积地尊重上述三条规则.

解决方案1

<input type="text" pattern="\d*" />
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

此解决方案尽管在iOS中工作并且完成了由w3验证器测试的HTML规则,但在Chrome Android中提供了带有QWERTY键盘的完整键盘.


解决方案2

<input type="number" pattern="\d*" />
Run Code Online (Sandbox Code Playgroud)

此解决方案适用于iOS和Android Chrome系统,显示两个系统上的数字键盘,但它会抛出HTML验证错误

仅当输入类型为电子邮件,密码,搜索,电话,文本或URL时,才允许使用属性模式.


解决方案3

<input type="number" />
Run Code Online (Sandbox Code Playgroud)

此解决方案通过HTML测试,在Chrome上显示不错,但在iOS键盘上显示了几个不需要的密钥

在此输入图像描述


解决方案4

我看到许多开发人员使用此解决方案

<input type="tel" />
Run Code Online (Sandbox Code Playgroud)

但是经过Android Chrome测试,它不允许使用点符号(.),并且键有字母,这是多余的.

chrome输入类型=

html-input mobile-safari numeric-keypad android-keypad iphone-keypad

8
推荐指数
2
解决办法
4889
查看次数

Node url.format 已被弃用,我们应该使用什么来代替?

我在 VS Code 中收到url.format来自 NodeJS URL 模块的警告已被弃用。

const nodeUrl = require('url')

const url = nodeUrl.format({
  protocol: 'https',
  host: 'example.com',
  pathname: 'somepath'
})
Run Code Online (Sandbox Code Playgroud)

我应该用什么来代替?将上述内容替换为完全安全吗

const buildUrl = (url) => url.protocol + '://' + url.host + '/' + url.pathname

Run Code Online (Sandbox Code Playgroud)

这两个函数是否等效,即对于具有该结构的任何对象输入,它会产生相同的输出吗?没有url.format我可能会错过的魔法吗?例如pathname有或没有前导/.

我的项目很大,有很多调用url.format,我想确保没有任何问题。

编辑:显然我们应该使用WHATWG URL 标准

那么这是正确的替换吗?

const buildUrl = (url) => new URL(url.pathname, url.protocol + '://' + url.host)
Run Code Online (Sandbox Code Playgroud)

node.js

8
推荐指数
1
解决办法
8421
查看次数