Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSRF and XSS #44

Open
naseeihity opened this issue Mar 23, 2018 · 0 comments
Open

CSRF and XSS #44

naseeihity opened this issue Mar 23, 2018 · 0 comments
Assignees
Labels

Comments

@naseeihity
Copy link
Owner

web安全综述

  1. 输入验证
    • 尽可能使用白名单
    • 不能使用白名单时使用黑名单
    • 尽可能使用严格约定
    • 确保警示潜在的攻击
    • 避免直接的输入反馈
    • 尽可能地在不可信数据深入系统逻辑之前进行处理,或者直接使用你的框架的白名单机制
  2. 输出内容编码
    • 以合适的编码手段对所有从应用中吐出的数据进行编码
    • 尽可能地使用框架提供的输出编码功能
    • 尽量避免嵌入式渲染上下文
    • 以原始格式存放数据,在渲染时进行编码
    • 避免使用不安全的框架与规避了编码的JS调用
  3. 数据库
    • 避免直接从用户的输入中构建出SQL或者等价的NoSQL查询语句
    • 在查询语句与存储过程中都使用参数绑定
    • 尽可能使用框架提供好的原生的绑定方法而不是用你自己的编码方法
    • 不要觉得存储过程或者ORM框架可以帮到你,你还是需要手动调用存储过程
    • NoSQL 也存在着注入的危险
  4. 通信
    • 使用HTTPS
    • 采用HSTS强制使用HTTPS
    • 在Cookie中设置“secure”标志
    • 不要把敏感信息放在URL中
    • 确保HTTPS的配置是可用的

CSRF/XSS

CSRF(Cross-Site Request Forgery):跨站请求伪造

如何攻击

恶意代码可以在第三方网站上,不一定需要js,利用了本地cookie,get请求的不安全性。例如一些表单提交使用了get请求,黑客就可以在其网站上利用img的src指向该请求;

如何防范

可以给页面的cookie增加随机数(token)来防御,每次表单提交都要求提交该随机数,服务器端进行校验。通过referer进行源页面的判断,但是这个值是写在http请求头中的,也可能被篡改。

XSS(Cross-Site Scripting):跨站脚本攻击

如何攻击

必须源站接受恶意代码,需要js,如在用户输入中恶意注入js代码,利用img标签的onerror事件注入恶意代码,以及在url的get参数中加入恶意代码。

如何防范

要求站点对用户的输入进行校验,转译,并且能对输入输出进行编码,以及避免使用不安全的API(如_target)。如果要阻止通过js访问cookie,可以设置其为HttpOnly。

@naseeihity naseeihity self-assigned this Mar 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant