小编sle*_*ske的帖子

一个有一个成员的结构,有时需要```,有时不需要

我正在研究一个程序,它struct在许多地方使用泛型来绕过相关的值.该结构包含一个字段char* s.

许多功能修改s; 但是,有时结构用于将信息传递给只读取它的函数.在这些情况下,用于初始化的字符串通常s是a const char*.但是,将其分配会s导致编译器警告.

虽然技术上是正确的,但这个警告感觉不对,因为该功能不会修改s.有没有办法绕过这个警告,除了扔掉const?有没有办法让函数承诺它会将struct成员视为const

例:

#include <stdio.h>

struct mystruct{
  int i;
  char* s;
};

void i_only_read(const struct mystruct *m){
  printf("mystruct: i=%d, s=%s\n", m->i, m->s);
}

int main(int argc, char **argv){
  const char* cstr = "Hello";
  struct mystruct m;
  m.i=99;
  /* gcc warning: assignment discards ‘const’ qualifier
   * from pointer target type
   */
  m.s=cstr;
  i_only_read(&m);
}
Run Code Online (Sandbox Code Playgroud)

笔记

  1. 我无法将结构的声明更改为const char* s,因为大多数指向结构的函数都会修改s …

c warnings const

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

使用 JSF 和 RichEditor 时如何避免跨站脚本 (XSS) 攻击

我在全 JSF 平台上使用 Rich Editor 作为用户输入文本框。我试图避免对此文本字段的 XSS 攻击。

要求是

  • 用户可以在文本框中输入任意字符,
  • 丰富的编辑器应显示非编码值,或者编辑器不应&lt;显示<,
  • 应避免跨站点脚本攻击 (XSS)。

所以问题是,由于我们必须正确显示值,所以我们输入escape=false了输出文本,但它随后变得容易受到 XSS 攻击。

我尝试使用 jsoup 来过滤 HTML 标签,但似乎输入会自动编码并且无法使用 jsoup 。

所以我的问题如下。

  1. 是否有更好的方法来避免富编辑器的 XSS 攻击escape=false
  2. 看起来文本输入在到达保存阶段时已被编码,因此我无法使用 jsoup 进行过滤。JSF 内部如何对文本值进行编码和解码。脚本什么时候可以运行?
  3. 如果在获取输入后恰好在内部编码,我是否需要担心 XSS 攻击?
  4. 另外,还有一个软件 Parse,它被用来拦截请求。这是一种常见的黑客工具吗?如何使用它来进行潜在的攻击以及如何在当前情况下避免这种攻击。具体来说,如果有人像该软件拦截正常请求那样拦截请求,会有什么区别吗?

java security xss jsf richedit

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

我可以像 Spring 一样使用 CDI 和 @PersistenceContext 注入 JPA EntityManager 吗?

在 Spring 中,我可以javax.persistence.EntityManager 使用 annotation将 an 注入到 Spring bean 中@javax.persistence.PersistenceContext,如下所示:

@Service
public class MyRepository {
    @PersistenceContext
    private EntityManager entityManager;
}
Run Code Online (Sandbox Code Playgroud)

这在 Spring 文档的第20.5.2实现基于普通 JPA 的 DAO 中有所记录。

如果我不使用 Java EE 容器,有没有办法使用 CDI(特别是 Weld)来做到这一点?

特别是,是否可以重用@PersistenceContextCDI的注释(因为现有代码将它与 Spring 一起使用)?

据我了解:使用 Java EE 容器时,容器会解释注解并注入 EntityManager。那是对的吗?有没有办法在没有 Java EE 容器的情况下使用 Weld 使其工作?


我尝试使用 Weld(在 Tomcat 中,没有 Java EE)将上面的类注入到另一个类中。发生了注入,因此 Weld 正确创建了 的实例MyRepository,但是字段MyRepository.entityManagernull,就好像注释@PersistenceContext被忽略了一样。

这里发生了什么(或者更确切地说,没有发生)?

spring jpa weld jakarta-ee

3
推荐指数
2
解决办法
3575
查看次数

具有严格空值检查的TypeScript-数组访问如何?

在TypeScript中,如果启用了严格的null检查,我希望编译器阻止我向变量赋值nullundefined值,除非它允许null

但是,数组访问似乎可以绕开此检查。

例:

let a: string[] = ["Hello"];
let s: string;

// 1) this produces an error, as expected
s = undefined

// 2) s is undefined here, too, but no error
s = a[3];
console.log(s);
Run Code Online (Sandbox Code Playgroud)

TypeScript Playground上的可运行版本(注意:必须在“选项”对话框中启用“严格的空检查”)。

这里发生了什么?

  • 这是TypeScript编译器中的错误吗?
  • 还是故意遗漏?
  • 如果是后者,此文件是否记录在任何地方(理想的理由是这样做的理由)?

null types typescript2.0 strictnullchecks

3
推荐指数
2
解决办法
704
查看次数

MySQL INSERT错误

我收到了这个错误:

Database problem occur, please try again later.
- Error in query: INSERT INTO main SET title ='', url='www.jerseymurah.com', kod='jerseymurah', owner='Hasbul Aqill', tag='jersey, football, world cup', since='Feb 2010', desc='ssfsfsfsfs'
- Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc='ssfsfsfsfs'' at line 1 (Error #1064)
- File: /home/yosh/domains/yosh.my/public_html/demo/admincp/tambah-save.php
Run Code Online (Sandbox Code Playgroud)

这是我的mysql查询代码:

$query = "INSERT INTO main SET title ='".$ttile."', url='".$url."', 
kod='".$kod."', owner='".$owner."', tag='".$tag."', since='".$since."', 
desc='".$desc."'"; …
Run Code Online (Sandbox Code Playgroud)

php mysql

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

git-new-workdir:在工作树A中提交导致树B中的虚假更改

我用git-new-workdir一个git存储库有两个工作树.这通常很有效,但是如果在两个工作树中检出相同的分支,我会在提交某些内容后得到有趣的行为:

  • 我从干净的工作树和"主人"开始.
  • 我在工作树A中做了些什么.

结果:

  • 工作树A中的"git status"显示"clean"(如预期的那样)
  • 工作树B中的"git status"突然显示"要进行的更改"

显示的更改与我在A中提交的提交相反.例如,如果A中的提交添加了一行,则B中的"要提交的更改"显示此行已被删除.

这里发生了什么?这是git-new-workdir的已知限制吗?有没有办法避免这个问题?或者我应该避免在两个副本中签出同一分支时检入?

我也有兴趣了解内部发生的事情(我对git的内部结构知之甚少).

注意:

我发现git reset--hard如果B在A中提交之前没有未提交的更改,那么只需在B中运行就可以轻松解决问题 .

但是,如果我在A中提交B中存在未提交的更改,则真正未提交的更改会与提交中的伪造更改混合在一起,并且似乎没有简单的方法可以解开它们.因此问题.

git git-worktree

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

是否可以检查ELF可执行文件的"GNU_HASH"部分中的哈希值?

当我反汇编ELF可执行文件时,我看到一个GNU_HASH似乎包含哈希的部分.我认为这是一个签名,以检查可执行文件是否被病毒修补或感染.

有没有办法检查这个签名?Linux在运行程序时是否会自动检查此签名?

linux hash elf digital-signature

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

如何处理我的MySQL数据库中的撇号?

我有一个我从CSV文件创建的SQL文件.它包括美国所有大都市区的名称,以及一些有关其人口的统计数据.我编写了一个PHP脚本,它接收填充数据,将其转换为图表,并将其粘贴到城市的行中,位于不同的列中.这个剧本运行良好,直到它来到爱达荷州Coeur d'Alene.我认为这是因为城市名称中的撇号(单引号).这是代码:

$query = "UPDATE population SET `$columnname`='$chart_url' WHERE name = '$cityname'";
            mysql_query($query) or die;
Run Code Online (Sandbox Code Playgroud)

因此它通过将其与城市名称相匹配来找到该行.由于数据的原因,没有任何其他方法可以做到这一点.有没有办法处理SQL文件中已经没有未转义字符的数据?

php mysql sql-injection

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

推送提交到repo,但服务器上的repo不包含任何文件

到目前为止,我对git的使用主要是通过IDE进行的,我对我认为简单的事情有点噩梦.

在远程服务器上,我运行gitolite似乎工作正常,我的本地机器可以连接到服务器并执行简单的任务.

我在服务器上有一个repo,其名称与我本地的repo相同,但是本地repo在服务器版本之前创建了很长时间.

经过大量阅读后,建议克隆遥控器,然后推送到服务器.所以:

$ git clone ***server***:***repo***
Cloning into ***repo***...
warning: You appear to have cloned an empty repository.
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到一个鼓舞人心的信息:

$ git push origin master
Counting objects: 4070, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3737/3737), done.
Writing objects: 100% (4070/4070), 15.16 MiB | 588 KiB/s, done.
Total 4070 (delta 867), reused 0 (delta 0)
To ***server***:***repo***.git
 * [new branch]      master -> master
$
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错...... 但文件不在服务器上?

我应该合并,还有什么关于rebase ...这是我的知识完全崩溃的地方.我试过阅读git-scm文档,但我必须诚实......这是我的想法,这似乎应该是一件非常简单的事情.

unix git version-control

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

如何正确检出远程存储库中的分支

我有这个

    abc@abc-ubuntu:~/project1/wh-app-ios$ git branch -a -v -v
    * master                   1d35af1 [origin/master: ahead 2] Adding 123 to hello
      remotes/gitb/gh-pages    e3dad9d boom
      remotes/gitb/integration 1d3fcd5 Adding 55_Glossary chapter
      remotes/gitb/master      86d1d30 Merge remote-tracking branch 'origin/master'
      remotes/gitb/pt_BR       dc9d991 Revisions at 03, 07, 08, 09, 10, 11 and 50
      remotes/origin/HEAD      -> origin/master
      remotes/origin/master    1ae426b Update README.md
Run Code Online (Sandbox Code Playgroud)

我做

    abc@abc-ubuntu:~/project1/wh-app-ios$ git checkout gitb/master
    Note: checking out 'gitb/master'.

    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any …
Run Code Online (Sandbox Code Playgroud)

git

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

通过引用32/64位传递时C中的字节顺序问题

我在下面的例子中遇到了一个字节序问题.在这个main()传递地址的32位整数和myfunc()接收它在64位.

#include <stdint.h>
#include <stdio.h>

void myfunc(uint64_t *b)    
{    
    printf("%llx\n", *b);    
if ((*b & 255) == 127)    
   printf("\n It works\n");    
else    
    printf("\n Not working\n");    
}

main()    
{    
uint32_t a = 127;    
    printf("\n%lx\n", a);
    myfunc(&a);
}
Run Code Online (Sandbox Code Playgroud)

它在小端平台(Windows)上正常工作.

7f
28ff780000007f
Run Code Online (Sandbox Code Playgroud)

有用

但它在big endian(AIX)上失败了.

7f
7fdeadbeef
Run Code Online (Sandbox Code Playgroud)

不工作

我认为当我们传递32位的地址并在64位接收时,在大端平台上它接收到其他32位.但我不确定.请帮助我了解这背后发生的事情.我不能在这里正确编写第一行程序.

非常感谢安

c endianness

0
推荐指数
1
解决办法
280
查看次数