我已经通过GUID 和 保护ajax请求阅读了 保护AJAX 请求 .现在让我解释一下我的场景,下面是可能有助于解释主题的代码片段.
[WebMethod[EnableSession = True]
[ScriptMethod]
public static string CreateTitle(string strTitleName)
{
string strResult = "Custom jSon string";
if(Session["Authorized"] == "True" && !String.IsNullOrEmpty(strTitleName))
{
String strTitle = Server.HtmlEncode(strTitleName);
InsertRecordInDB(strTitle);
strResult = "Custom jSOn string" + EncryptMD5("record id");
}
return strResult;
}
Run Code Online (Sandbox Code Playgroud)
以下是在参数中发送的javascript调用.btnCreateTitle_click是按钮客户端的click事件.txtTitle是接受标题名称的文本框.在页面上创建验证器以验证文本框.CreateTitle是我使用scriptmanager调用的页面方法
function btnCreateTitle_Click(evnt){
if(Page.ClientValidate()){
if($get("txtTitle")){
PageMethods.CreateTitle($get("txtTitle").value,success,failure,context);
}}}
Run Code Online (Sandbox Code Playgroud)
函数成功显示创建标题的growl消息,并显示带有加密记录id的链接作为查询字符串到url以查看创建的标题的详细信息.
现在燃烧的问题,
我正在开发一个服务器/客户端Java应用程序,我需要在发送数据之前对客户端进行身份验证,我还需要在身份验证后加密发送的数据并确保其新鲜度
我想知道什么是我能用来做的最好的图书馆?
是的,我已经阅读了所有的文档@ developer.android.com,我确实理解了一切基本的例外 - 它是什么引入的.
由于来自Google Play的所有订单回复都是由不可访问的私钥签署的,并且正在通过配对的公钥进行验证(在我的情况下在外部服务器上,因此第三人也无法访问),简直(几乎)没有办法欺骗.
所有这些nonce只是保证购买的多余方式.而且,在以下情况下,文档对情况一无所知:
在上面描述的情况下,用户支付物品并且永远不会得到它,这是可耻的.当然,我可以将nonce存储在某个文件中,并在我的应用程序返回时重新读取它,但它违反了nonce的所有原则.
恕我直言,有人刚刚说"嘿,验证过程太简单了,让我们添加一些随机性更多的东西,它会变得更酷!".有人做了.
或者,如果我错过了,你会想到其他一些用例吗?否则我将从我的代码中删除整个nonces部分.
我正在使用 WP_List_Table 在 WordPress 插件中设置批量操作。我想要允许的唯一批量操作是删除。我有一个删除项目的链接,该项目通过生成的随机数
wp_create_nonce( 'deletePoll' )
Run Code Online (Sandbox Code Playgroud)
当我点击链接时,它工作得很好。我正在处理代码中验证它
check_admin_referer( 'deletePoll' );
Run Code Online (Sandbox Code Playgroud)
但是,当我使用批量操作表单尝试删除时,我收到“您确定要执行此操作吗?” 信息。
我查看了 wp-admin/post.php,看看他们如何处理垃圾项目,除了它有效之外,它似乎完全相同。
我正在尝试从Java调用Web服务。除了Web服务期望以用户名和密码以及随机数的形式提供某种安全性外,这基本上没有那么困难。当我尝试从SoapUi调用Web服务时,我看到原始消息看起来像这样:
<soapenv:Envelope xmlns:sch="http://somedomain.com/pe/ws/schema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-E70691ACBDEFEC750814238295617871">
<wsse:Username>usr</wsse:Username>
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
>pw</wsse:Password>
<wsse:Nonce
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
>4smQZF5KMSktEXrQc0v5yw==</wsse:Nonce>
<wsu:Created>2015-02-13T12:12:41.784Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<sch:EventSubmitRequest>
<sch:Event>
<sch:EventId>392</sch:EventId>
<sch:Recoverable>false</sch:Recoverable>
</sch:Event>
</sch:EventSubmitRequest>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
消息中显而易见的元素是用户名,密码和已创建,但让我感到困惑的是随机数。在示例中,该字段的值为4smQZF5KMSktEXrQc0v5yw ==,但是每个请求的值都不同(这很有意义,因为根据Wikipedia,随机数是仅使用一次的任意数字)。在四处搜索时,我找不到如何在Java中生成随机数的可用示例(尽管我确实在堆栈溢出时找到了一些php示例,但我无法轻松地验证它们是否起作用)。虽然我不介意自己构造该随机数,但我想知道这是否真的必要,但我有点希望这是Java中的标准功能。
以下是我正在使用的代码:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class soaptest {
public static void main(String args[]) {
try {
// Create SOAP Connection
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
// Send SOAP Message to SOAP Server
String url = …Run Code Online (Sandbox Code Playgroud) 我已经构建了一个自定义的 WooCommerce 购物车,您可以在其中使用 AJAX 更改数量和/或从购物车中删除项目,但它有问题,我认为这与 WooCommerce 和 WordPress nonces 的有效性有关。
问题:
当您的购物车中有产品并且您至少刷新页面一次时 - 将产品添加到您的购物车后,它会起作用。
当您第一次访问时,它不起作用,您将产品添加到购物车中并尝试编辑产品的数量,或尝试删除它。
在https://staging.noten.nl/noten/上亲自查看- 请检查您的智能手机。将产品添加到购物车,单击它并更改值(多 250 克/少 250 克/删除产品)
PHP - Nonce 创建
/*
** Theme scripts
*/
function scripts() {
// Enqueue scripts
wp_enqueue_script( 'noten-nl/js', Assets\asset_path('scripts/main.js?v=' . VERSION), ['jquery-core', 'wp-util'], null, true );
// Localize script
wp_localize_script( 'noten-nl/js', 'shop', array(
'url' => admin_url( 'admin-ajax.php' ),
'cart_more' => wp_create_nonce( 'cart-more-nonce' ),
'cart_less' => wp_create_nonce( 'cart-less-nonce' ),
'cart_delete' => wp_create_nonce( 'cart-delete-nonce' )
)); …Run Code Online (Sandbox Code Playgroud) 在挑战-响应机制(和其他系统)中,建议不要使用基于时间的随机数。
为什么应该避免?
我的代码中有一个奇怪的行为,但它仅出现在 webkit 浏览器(chrome + opera)中,并且仅在启用 SSL 的情况下出现。一般我在 script-tags 中使用 nonce-attribute,但只有特殊的用户组发送匹配的 http-header for nonce。因此,对于大多数访问者来说,这只是一个属性,而不是为了安全。
<script src="https://www.example.com/script.js" nonce="random-value"></script>
Run Code Online (Sandbox Code Playgroud)
在没有 SSL(仅 HTTP)的本地主机上,它工作正常,但使用 SSL(HTTPS)时,我在源代码中看到随机值,但在检查器/元素中是随机数属性为空。
<script src="https://www.example.com/script.js" nonce=""></script>
Run Code Online (Sandbox Code Playgroud)
在 Firefox 和 Edge 中显示此值。这是 webkit 中的错误、安全性还是我的错误,但为什么只在 webkit 中?Chrome 68.0.3440.84 与 Windows 10。
是否有使用CSP(内容安全策略)在WebForms项目中将动态创建的脚本列入白名单的安全方法?
使用unsafe-inline如下所示它有效但不推荐.
context.Response.Headers.Append("Content-Security-Policy", string.Format("default-src 'none'; connect-src 'self'; font-src 'self'; img-src 'self' data: https:; style-src 'self'; script-src 'self' 'unsafe-inline'"));
Run Code Online (Sandbox Code Playgroud)
对于任何其他选项,例如nonce-(random),我们看到此CSP错误消息:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"script-src'self'".要求内联执行,需要'unsafe-inline'关键字,散列或nonce.
我正在向一个站点添加 CSP 标头,该站点在采用严格的策略之前还有很长的路要走。有相当多的内联脚本,因此我使用 nonce- 来允许特定的内联脚本。我发现它不适用于onload带有 src 的脚本标记的属性。这是一个例子:
// header:
Content-Security-Policy: script-src self https: 'nonce-d3adbe3fed'
<script async defer src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js" nonce="d3adbe3fed" onload="console.log('onload', _.VERSION)"></script>
Run Code Online (Sandbox Code Playgroud)
完整的工作演示位于https://brave-pasteur-0d438b.netlify.com/
Chrome 给出以下错误:
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src self https: 'nonce-d3adbe3fed'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.
Run Code Online (Sandbox Code Playgroud)
该消息表明应该可以使用随机数启用内联事件处理程序,但据我所知,随机数仅适用于内联脚本。
这只是一个演示,但用例是一个异步/延迟跟踪脚本,它加载跟踪库,然后在onload处理程序中对加载的库进行跟踪调用。
是否可以在一个onload或其他事件处理程序属性上使用随机数,或者我需要更改我的实现吗?使用script-src 'unsafe-inline'orscript-src-attr 'unsafe-inline'不是一个选项,因为这些是我专门试图解决的漏洞。并且将处理程序的内容onload放入脚本标记后面的单独脚本中也不是一个选项,因为脚本是async deferred …
nonce ×10
java ×2
webforms ×2
wordpress ×2
android ×1
asp.net ×1
asp.net-ajax ×1
cart ×1
cryptography ×1
javascript ×1
php ×1
security ×1
soap ×1
woocommerce ×1
ws-security ×1