网站安全检测内容(Web项目比较常见的安全问题(CrossSiteScript))

优采云 发布时间: 2022-01-29 10:10

  网站安全检测内容(Web项目比较常见的安全问题(CrossSiteScript))

  Web 项目的常见安全问题

  1.XSS(CrossSite Script)跨站脚本攻击

  XSS(CrossSite Script)跨站脚本攻击。是指恶意攻击者在网页中插入恶意html代码,当用户浏览网页时,会执行嵌入在网页中的html代码,从而达到恶意用户的特殊目的。

  测试方法:在数据输入界面,添加记录输入:,如果添加成功,如果弹出对话框,说明这里有XSS漏洞。或者把url请求中的参数改成,如果页面弹出对话框,说明这里有XSS漏洞

  修改建议:过滤掉用户输入中的危险字符。对输入数据执行客户端和程序级验证(例如,通过正则表达式等)。eg:是否用户输入和变量的长度以及是否过滤"",";","'"等字符

  2.CSRF 和跨站脚本 (XSS)

  CSRF 或跨站点脚本 (XSS) 是指强制登录的浏览器向易受攻击的 Web 应用程序发送请求,然后代表受害者为入侵者的利益执行选定操作的请求。

  测试方法:在同一个浏览器中打开两个页面。一个页面的权限无效后,其他页面是否可以操作成功。使用工具发送请求,http请求头中不要添加referer字段,查看返回消息的响应。它应该被重新安置。到错误界面或登录界面。

  修改建议:在不同的会话中发送两次相同的请求,收到相同的响应。这表明没有一个参数是动态的(会话 ID 仅在 cookie 中发送),因此应用程序容易受到此问题的影响。所以解决方案是:

  (1) Cookie Hashing(所有形式都收录相同的伪随机值):

  (2) 验证码

  (3) 一次性令牌(不同的形式收录不同的伪随机值)客户端保护措施,应用工具或插件来防止 CSRF 攻击。

  3.注入测试

  SQL注入是通过将SQL命令插入Web表单提交或输入域名或页面请求的查询字符串来欺骗服务器执行恶意SQL命令。

  测试方法:在需要查询的页面,输入查询条件正确、1=1等简单的sql语句,查看响应结果。如果返回结果与输入的正确查询条件一致,说明应用程序没有过滤用户输入,可以进行初步判断。此处存在 SQL 注入漏洞

  修改建议:验证用户输入,可以使用正则表达式,或者限制长度;转换以下关键字等;

  |alert|and|exec|execute|insert|select|delete|update|count|drop|chr|mid|master|truncate|declare|sitename|netuser|xp_cmdshell|or|+|,|like'|and|exec| 执行|插入|创建|删除|表|从|授予|group_concat|column_name|information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|chr|mid|master|truncate|declare| 或|–|+|,|喜欢|//

  不使用动态汇编sql,可以使用参数化sql或者直接使用存储过程进行数据查询访问;

  不要使用具有管理员权限的数据库连接,为每个应用程序使用具有有限权限的单独数据库连接;

  应用程序的异常消息应该尽可能少地给出提示,最好用自定义错误消息包装原创错误消息。

  4.登录验证测试

  4.1 暴力破解

  暴力破解是目前最直接、最有效的攻击方式。尤其是金融服务,很多时候密码都是6位纯数字,很容易被攻击。这个测试项目是检查认证系统对暴力破解的保护。

  测试方法:

  启动抓包工具,同时打开浏览器,进入用户登录页面,输入用户名、密码和验证码,登录。如果抓包中存在明文的用户名和密码,则表示有弱点。

  修改建议:将请求方式从HTTP改为HTTPS或对输入的用户名和密码进行加密,并在服务器上验证密码

  4.2 条代码注释

  Web程序开发版的注释在发布版中没有去掉,导致部分敏感信息泄露。我们想看看客户端能看到的页面的源码,发现这样的安全隐患。

  测试方法:打开登录页面(或待测试页面),点击浏览器邮箱,查看源码,查看源码评论区是否有敏感信息泄露。敏感信息包括:字段文本描述、内网IP地址、SQL语句和物理路径等。

  建议编辑:不要在 HTML 注释中留下任何重要信息(例如文件名或文件路径)。

  从生产站点注释中删除以前(或将来)附加链接的跟踪信息。避免在 HTML 注释中放置敏感信息。确保 HTML 注释不收录源代码片段。

  4.3 用户名破解

  为了进行暴力破解,攻击者需要知道现有的用户名,然后对用户名进行攻击。

  测试方法:在登录界面输入一个不存在的用户名和任意密码。如果用户名不存在,则说明存在漏洞;使用正确的用户名和错误的密码登录。如果密码或密码错误,则说明存在漏洞。.

  修改建议:服务器将对所有登录错误原因进行统一响应,不会提示准确的错误信息。

  4.4默认账户名设置

  一般系统都有默认登录用户和超级管理员帐号。如果登录账号过于简单,很容易被破解,导致超级权限泄露。

  修改建议:清除在线系统上具有超级管理员权限的用户,或者增加超级管理员登录名的复杂度。不要设置容易猜到的admin、superadmin等名称。

  4.5 错误页面信息

  404、500 和其他错误或警告消息可能会泄露敏感信息。

  修改建议:捕获异常并跳转到统一的错误页面,避免向外界泄露详细的错误信息。

  5.会话管理测试未更新

  5.1会话ID测试

  检查登录成功后会话ID是否发生变化。如果不改变,攻击者可以通过某种方式(比如构造一个URL)为受害者确定一个会话ID。受害者登录成功后,攻击者也可以利用这个会话ID冒充受害者访问系统。

  测试方法:启动抓包工具或者浏览器自带的开发者模式打开登录页面,输入正确的用户名、密码和验证码登录,登录后进行任何业务操作。如果登录的 SessionId 和业务的 SessionId 不变,则存在漏洞。

  修改建议:每次请求从最后一次请求中获取token,服务器对每次交互进行验证

  检查浏览器窗口空闲超时后是否有重新登录的机制

  5.2会话清除测试

  用户退出后,需要清除会话信息,否则用户点击退出按钮后可以继续访问退出前才访问过的页面。

  测试方法:进入登录页面,输入正确的用户名和密码,登录成功后,进行一些业务操作,点击注销按钮,在浏览器中输入地址,上面输入业务操作的地址。如果能正常返回业务页面,说明存在漏洞。

  修改建议:用户注销后,必须清除用户的会话信息和缓存信息。

  几个常见的web安全问题测试介绍 - 文章 - 知乎 /p/107992252

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线