我正在编写一个简单的javascript tokenizer来检测基本类型:Word,Number,String,RegExp,Operator,Comment和Newline.一切都很顺利,但我无法理解如何检测当前字符是RegExp分隔符还是除法运算符.我没有使用正则表达式,因为它们太慢了.有人知道检测它的机制吗?谢谢.
我做了一个简单的自动加载功能,当你在网站上向下滚动时加载内容.但是,当我在Codeigniter中启用CSRF保护时,似乎存在一些问题.
我没有使用表单,所以我不知道当你滚动时我正在做我的帖子请求时如何将令牌从A发送到B.
我的JavaScript
if (location.href == baseurl) {
$(window).scroll(function(){
if ($(window).scrollTop() > $('body').height() / 2) {
if(doScroll == 1) {
$.post(baseurl + 'ajax/images',{'id' : ID}, function(data) {
$("#wrapper_content").append(data);
if(data == 'Det finnes ikke flere bilder i databasen, WTF!? Send inn forslag ASAP!') {
doScroll = 0;
}
ID++;
});
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
由于Codeigniter期望在所有POST请求中都有TOKEN,因此当CSRF启用时,我无法使其工作.有什么建议?
启用CSRF时出错
无法加载资源:服务器响应状态为500(内部服务器错误)
如果我关闭CSRF,一切都很好......
在身份验证令牌的情况下,客户端发送凭据,接收令牌并在所有后续调用中使用它.服务器需要保存令牌以验证请求.
使用例如PHP会话,服务器返回客户端在每个请求中发送的会话UID.服务器需要保存会话.
在这两种情况下,服务器都需要保存状态,为什么前者被认为是无状态?
如果出于某些审计原因,我会被要求AccessToken在创建后存储到Db,是否有一个Owin API类返回AccessToken?
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
//check user credentials
....
context.Validated(ticket);
//Where should I get the generated token?
}
}
Run Code Online (Sandbox Code Playgroud)
我找到的唯一解决方法是创建一个Http过滤器,Global.Asax用于读取输出流并从那里获取令牌.
是否有更优雅的方式直接从Owin Api获取它?
我已经成功构建了一个获取访问权限和刷新令牌的应用程序.
在我的脚本中,我检查访问令牌是否有效,如果不是,我然后使用刷新令牌获取访问权限 $client->refreshToken($refreshToken);
代码全部,
$refreshToken = '<REFRESH_TOKEN>';
$client_id = '<CLIENT_ID>';
$client_secret = '<CLIENT_SECRET>';
// Setup infomation
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setAccessType("offline");
$client->addScope("https://mail.google.com/");
// If access token is not valid use refresh token
if($client->isAccessTokenExpired()) {
// Use refresh token
$client->refreshToken($refreshToken);
} else {
// Use access token
echo $client->setAccessToken($accessToken);
}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用刷新令牌时,我得到了一个激发:
Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }''
Run Code Online (Sandbox Code Playgroud) 我正在使用asp.net web api 2并使用JWT进行身份验证.应用程序正常工作,因为它在用户登录请求时生成令牌,然后用户可以使用该令牌进行后续请求.但我有一些安全问题,比如
如果我的问题不明确,请评论.
我已经创建了一个基本的JWT生成器,但需要在几个方面提供建议.我一直在使用JWT.io的指南和auth0/java-jwt库/ repo来生成令牌.
JWT正在使用2个不同的密钥进行签名.
使用RSA512算法使用4096位密钥对刷新令牌进行签名.
.sign(Algorithm.RSA512(rsaPublicKey, rsaPrivateKey));
Run Code Online (Sandbox Code Playgroud)
通过RSA256算法使用1024位RSA密钥对访问令牌进行签名.
.sign(Algorithm.RSA256(rsaPublicKey, rsaPrivateKey));
Run Code Online (Sandbox Code Playgroud)
由于4096位验证过程需要更长的时间,因此我对"速度"的建议已经采用了这一点,但似乎对刷新令牌的请求较少,安全性的权衡似乎是公平的.
另一方面,访问令牌在资源服务器端点进行验证,并且它们被更频繁地发送,因此我选择了更短(256)的签名,该签名使用更快的1024位密钥进行.
我知道钥匙"几乎"不可能破坏......但建议使用钥匙旋转?
我将jks(密钥库)保存在auth服务器和资源服务器上的私有文件夹中.密钥库包含2个密钥对,一个用于刷新令牌签名/验证,另一个用于访问令牌签名/验证.
我需要刷新/形成新密钥吗?如果是这样......多久一次?建议的方法是什么?
在负载均衡器后面可以有多个auth和资源微服务实例...因此RAM生成的密钥是否为,因为它们不会在实例之间传播.
我已经看过可能有一个"密钥服务器",可以说创建新密钥并将它们附加到密钥库并将新的jks文件更新为新的密钥对...类似于:

因此,例如,每隔15秒,EC2 auth服务器和资源服务器ping密钥服务器,请求当前jks的副本(和版本检查).
有什么建议?
谢谢!
默认情况下,(德语)spacy 分词器不会按斜线、下划线或星号分割,这正是我所需要的(因此“der/die”会生成单个标记)。
然而,它确实在括号上拆分,因此“dies(und)das”被拆分为 5 个标记。是否有一种(简单)方法告诉默认标记器也不在括号上拆分,括号两边都由字母括起来,没有空格?
为分词器定义的括号上的分割到底是如何定义的?
通过该方法,我获得了 publicKey 拥有的令牌列表:
connection
.getParsedTokenAccountsByOwner(
new PublicKey(publicKey.toBase58()),
{
programId: TOKEN_PROGRAM_ID
}
)
.then((b) => {
const owner = b?.value?.[0].account.owner;
const pb = b?.value?.[0].pubkey;
const nonZeroAccounts = b?.value?.filter(
(obj) => obj.account.data.parsed.info.tokenAmount.uiAmount > 0
);
setTokens(JSON.stringify(nonZeroAccounts, null, 2));
Run Code Online (Sandbox Code Playgroud)
例如,拥有 1 个代币的帐户的返回值:
{
"account": {
"data": {
"parsed": {
"info": {
"isNative": false,
"mint": "example",
"owner": "example",
"state": "initialized",
"tokenAmount": {
"amount": "1",
"decimals": 0,
"uiAmount": 1,
"uiAmountString": "1"
}
},
"type": "account"
},
"program": "spl-token",
"space": 165
},
"executable": false,
"lamports": 2039280, …Run Code Online (Sandbox Code Playgroud)