关于网站安全方面的问题疑惑(XSS、SQL等)

php中文网
发布: 2016-06-23 13:56:07
原创
1397人浏览过





一个网站在开发的时候  就需要考虑安全问题吗?

服务器安全除外    是不是只要做好了  上传、表单危险字符串过滤就可以了?  XSS SQL 



千面视频动捕
千面视频动捕

千面视频动捕是一个AI视频动捕解决方案,专注于将视频中的人体关节二维信息转化为三维模型动作。

千面视频动捕 27
查看详情 千面视频动捕

回复讨论(解决方案)

xss sql注入 跨域攻击 特殊字符处理

哪有这么简单。

2. 输入验证和输出显示
2.1 命令注入
2.2 跨站脚本
2.3 文件包含
2.4 代码注入
2.5 SQL注入
2.6 XPath注入
2.7 HTTP响应拆分
2.8 文件管理
2.9 文件上传
2.10 变量覆盖
2.11 动态函数
3. 会话安全
3.1 HTTPOnly设置
3.2 domain设置
3.3 path设置
3.4 cookies持续时间
3.5 secure设置
3.6 session固定
3.7 CSRF
4. 加密
4.1 明文存储密码

4.2 密码弱加密
4.3 密码存储在攻击者能访问到的文件
5. 认证和授权
5.1 用户认证
5.2 函数或文件的未认证调用
5.3 密码硬编码
6. 随机函数
6.1 rand()
6.2 mt_srand()和mt_rand()
7. 特殊字符和多字节编码
7.1 多字节编码
8. PHP危险函数
8.1 缓冲区溢出
8.2 session_destroy()删除文件漏洞
8.3 unset()-zend_hash_del_key_or_index漏洞
9. 信息泄露
9.1 phpinfo
10. PHP环境
10.1 open_basedir设置
10.2 allow_url_fopen设置
10.3 allow_url_include设置
10.4 safe_mode_exec_dir设置
10.5 magic_quote_gpc设置
10.6 register_globals设置
10.7 safe_mode设置
10.8 session_use_trans_sid设置
10.9 display_errors设置
10.10 expose_php设置

命令注入
PHP执行系统命令可以使用以下几个函数:system、exec、passthru、“、shell_exec、popen、proc_open、pcntl_exec
我们通过在全部程序文件中搜索这些函数,确定函数的参数是否会因为外部提交而改变,检查这些参数是否有经过安全处理。
防范方法:
使用自定义函数或函数库来替代外部命令的功能
使用escapeshellarg函数来处理命令参数
使用safe_mode_exec_dir指定可执行文件的路径

跨站脚本
反射型跨站常常出现在用户提交的变量接受以后经过处理,直接输出显示给客户端;存储型跨站常常出现在用户提交的变量接受过经过处理后,存储在数据库里,然后又从数据库中读取到此信息输出到客户端。输出函数经常使用:echo、print、printf、vprintf、
对于反射型跨站,因为是立即输出显示给客户端,所以应该在当前的php页面检查变量被客户提交之后有无立即显示,在这个过程中变量是否有经过安全检查。
对于存储型跨站,检查变量在输入后入库,又输出显示的这个过程中,变量是否有经过安全检查。
防范方法:
如果输入数据只包含字母和数字,那么任何特殊字符都应当阻止
对输入的数据经行严格匹配,比如邮件格式,用户名只包含英文或者中文、下划线、连字符
对输出进行HTML编码,编码规范
> >
( (
) )
# #
& &
" "
‘ '
` %60

文件包含
PHP可能出现文件包含的函数:include、include_once、require、require_once、show_source、highlight_file、readfile、file_get_contents、fopen、 nt>file
防范方法:
对输入数据进行精确匹配,比如根据变量的值确定语言en.php、cn.php,那么这两个文件放在同一个目录下’language/’.$_POST[‘lang’].’.php’,那么检查提交的数据是否是en或者cn是最严格的,检查是否只包含字母也不错
通过过滤参数中的/、..等字符

代码注入
PHP可能出现代码注入的函数:eval、preg_replace+/e、assert、call_user_func、call_user_func_array、create_function
查找程序中程序中使用这些函数的地方,检查提交变量是否用户可控,有无做输入验证
防范方法:
输入数据精确匹配
白名单方式过滤可执行的函数

SQL注入
SQL注入因为要操作数据库,所以一般会查找SQL语句关键字:insert、delete、update、select,查看传递的变量参数是否用户可控制,有无做过安全处理
防范方法:
使用参数化查询

更详细的看这里:http://www.sectop.com/?p=111

楼上的回答好强悍。
个人感觉,上传、表单通过字符串过滤,以及mysql转义(或者PDO接口)都可达到安全级别。
关键难难在防御服务器攻击。操作系统(不断的打补丁),apahce(潜在的漏洞),php(升级到最新版本),服务器端口(关闭某些端口号),FTP(权限和密码安全),SSH(端口号,密码)……

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号