标签: inline-scripting

如果脚本标记同时包含"src"和内联脚本,该怎么办?

我想知道如果一个脚本标签同时具有"src"和内联脚本.我试过下面的代码.

<script src="http://yui.yahooapis.com/2.8.1/build/yahoo/yahoo-min.js" type="text/javascript" charset="utf-8">
         alert('hello');
</script>
<script type="text/javascript" charset="utf-8">
         alert(YAHOO);
</script>
Run Code Online (Sandbox Code Playgroud)

它似乎从未在Firefox和Chrome中执行过"alert('hello')".我试图将src更改为指向不存在的URI."alert('hello')"也没有被执行.

那么,如果脚本标记中有src属性,则始终会忽略内联脚本?

javascript inline-scripting

13
推荐指数
1
解决办法
4545
查看次数

Django Stripe JS阻止内联脚本

我正在尝试在Django中实现条纹支付系统。要添加卡付款,我遵循了此链接中的指南在Django模板中添加HTML标记以及CSS和JS代码作为单独的静态文件后,在Firefox中出现以下控制台错误:

Content Security Policy: The page’s settings blocked the loading of a resource at inline (“script-src”)
Run Code Online (Sandbox Code Playgroud)

我从上述错误消息中了解到的是,<script src="https://js.stripe.com/v3/"></script>JS文件包含指向其他JS文件的链接,而Firefox阻止了此类连接。应当注意,在此阶段,测试信用卡付款正在按预期方式工作,并且客户借记的金额已添加到我的条纹帐户的测试余额中。为了解决此阻塞问题,我遵循了此链接中的说明因此,我meta在Django模板中添加了以下标记:

<meta http-equiv="Content-Security-Policy" content="connect-src https://api.stripe.com; frame-src https://js.stripe.com https://hooks.stripe.com; script-src https://js.stripe.com" />
Run Code Online (Sandbox Code Playgroud)

添加上述Content-Security-Policy指令后,Firefox控制台不再显示上述阻止错误,但是这次我的静态JS文件被阻止了。我修改了如下指令以允许我的JS文件('self'script-src'指令中添加了' ):

<meta http-equiv="Content-Security-Policy" content="connect-src https://api.stripe.com; frame-src https://js.stripe.com https://hooks.stripe.com; script-src 'self' https://js.stripe.com" />
Run Code Online (Sandbox Code Playgroud)

并且这一次之前提到的内联脚本阻止错误再次出现在Firefox控制台中。:)

您能帮我解决这个问题吗?关于Firefox控制台错误的原因,我的理解正确吗?为什么实施的解决方案不起作用?

编辑

考虑到付款按预期进行并且Chromium浏览器未在开发人员工具上记录任何错误,难道仅仅是Firefox的错误?

django firefox inline-scripting stripe-payments content-security-policy

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

CSP 不接受内联脚本哈希或随机数

我正在开发一个 Flask 应用程序,它使用 Flask-Talisman 来合并 CSP。我想在我的模板之一中创建一个内联脚本,而不是将“unsafe-inline”添加到 CSP 的“script-src”数组中(这可能对 XSS 攻击有害),我想使用哈希或允许脚本运行的随机数。我复制了 Opera 开发工具中控制台错误消息中给出的哈希值,并将其放入 CSP 的“script-src”数组中(在init .py 文件中)。但是,由于某种原因,CSP 不会接受哈希值,我不知道如何修复它。我也用随机数尝试过,也出现了同样的问题。这是控制台输出(出于安全原因我删除了哈希值):

The source list for Content Security Policy directive 'script-src' contains an invalid source: 'sha256-(hash goes here)'. 
It will be ignored.
Run Code Online (Sandbox Code Playgroud)

这是init .py中的 CSP :

csp = {
    "default-src": [
        "'self'",
        'https://www.youtube.com',
        'https://img.youtube.com'
    ],
    'script-src': [ 'sha256-(hash goes here)',
                    'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js',
                    'https://code.jquery.com/jquery-3.3.1.slim.min.js',
                    'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js'],
    'style-src': ["'self'",'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css']
}
Run Code Online (Sandbox Code Playgroud)

python hashcode inline-scripting flask content-security-policy

5
推荐指数
1
解决办法
2646
查看次数

CSP header 的 nonce 和 hash 之间哪个指令更好,以避免不安全内联?

我必须将 CSP 标头添加到站点。问题是这是一个遗留代码,并且 HTML 中有很多内联脚本和样式。我无法使用“unsafe-inline”,因为目的是真正确保站点安全,并且该指令在 OWASP ZAP 工具扫描中给出了危险信号。我可以在某种程度上重构 HTML 和 JS 代码,但我有几个问题:

  1. 我尝试过使用固定随机数(仅适用于 POC)和哈希方式将内联脚本列入白名单。但由于所有 HTML 都是静态的,我如何为每个请求的脚本标记添加新的随机数(随机数的实际情况就是如此)?

  2. 在这种情况下,提供所有必需脚本和样式的哈希值是否比随机数更好?

  3. 如果我重构所有 HTML 的代码以从 body 标记中删除所有内联脚本并将代码添加到 head 中的单个脚本标记中,这是否意味着内联脚本被消除了?简而言之,in算作内联脚本吗?

javascript inline-scripting content-security-policy

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

为什么内联JS块不安全?

我正在阅读Chrome扩展程序文档“ 内容安全策略(CSP) ”。它说:

内联JavaScript以及危险的字符串到JavaScript的方法(如eval)将不会执行。此限制禁止内联块和内联事件处理程序(例如<button onclick="...">)。

...

没有任何机制可以放宽执行内联JavaScript的限制。特别是,设置包含unsafe-inline的脚本策略将无效。这是故意的。

为什么嵌入式<script>块不安全?有人可以解释吗?如果您能举一些例子,那就更好了。

谢谢。

javascript security inline-scripting

3
推荐指数
1
解决办法
1194
查看次数

Mitmproxy在一个脚本中篡改GET和POST请求/响应

对某个网址(http://test.com)的POST请求如下:

{

"messageType": "OK",
"city": {
    "Name": "Paris",
    "Views": {
        "1231": {
            "id": 4234,
             "enableView": false
        },
    },
    "Views": [5447, 8457],
    "messages": [{
        "id": "message_6443",
        "eTag": 756754338
    }]
},
"client": {
    "Id": 53,
    "email": "test@test.us",
    "firstName": "test",
    "lastName": "test",
    "id": 52352352,
    "uuid": "5631f-grdeh4",
    "isAdmin": false,
Run Code Online (Sandbox Code Playgroud)

我需要拦截它并将"isAdmin"更改为true.

对某个网址(https://test.com/profiles/ {Random_Numbers}/id})的GET请求有一个'响应'[decode gzip] JSON

{
"id": 0, 
"Code": "Admin", 
"display": "RRRR"
}
Run Code Online (Sandbox Code Playgroud)

我需要将"id"值更改为5.

所以基本上我需要编写一个可以完成这两个的脚本.

到目前为止,我已经尝试在Github中获取示例代码的帮助,但我没有预期的结果.(我是一个完整的菜鸟:\)并希望有人可以帮助我开始.提前致谢!

编辑:根据Github中的示例代码,modify_response_body.py:

from libmproxy.protocol.http import decoded

def start(context, argv):
  if len(argv) != 3:
   raise ValueError('Usage: -s "modify-response-body.py …
Run Code Online (Sandbox Code Playgroud)

python regex proxy inline-scripting mitmproxy

3
推荐指数
1
解决办法
7857
查看次数

ASP.NET中的内联脚本

我想学习有关ASP.NET内联脚本的高级和基本知识

<img src="<%= Page.ResolveUrl("~")%>Images/Logo.gif"/>
Run Code Online (Sandbox Code Playgroud)

要么

<asp:Label ID="lblDesc" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Description")%>'></asp:Label>
Run Code Online (Sandbox Code Playgroud)

等等...

而且,<%%>和<%#%>之间的区别是什么?

从基本到高级实现这些用法,我在哪里可以找到?

asp.net coding-style inline-scripting

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