佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1880|回复: 6

关于textbox 输入html标签和 sql injection 疑问

[复制链接]
发表于 26-1-2013 07:16 PM | 显示全部楼层 |阅读模式
最近在学写论坛 , 遇到一些菜鸟问题 。 关于安全性的  ,请各位高手指点一下,万分感激!
sql 参数化以后 , 如果我不限制用户的上传信息  , 这样是否够安全呢 ?
还有我的代码写的够完整吗 ?

connection = new MySqlConnection(connectionString);
                        connection.Open();

                        string loginusername = txtloginusername.Text
                        string loginpassword = txtloginpassword.Text
                  
               
                        string sql_login = "select COUNT(*) as Admin_login from table where username =?loginName and password=?password";

                        MySqlCommand myCommand = new MySqlCommand(sql_login, connection);
                        myCommand.Parameters.Add(new MySqlParameter("loginName", MySqlDbType.VarChar)).Value = loginusername;
                        myCommand.Parameters.Add(new MySqlParameter("password", MySqlDbType.VarChar)).Value = loginpassword;

                        MySqlDataReader myReader = null;

                        myReader = myCommand.ExecuteReader();

还有就是textbox 的过滤问题
我这样写对吗 ?

validateRequest="false"

        public string Encode(string str)
        {
            str = str.Replace("&", "&");
            str = str.Replace("'", "''");
            str = str.Replace("\\", """);
            str = str.Replace(" ", " ");
            str = str.Replace("<", "&lt;");
            str = str.Replace(">", "&gt;");
            str = str.Replace("\r\n", "<br>");
            return str;
        }


        public string Decode(string str)
        {
            str = str.Replace("<br>", "\r\n");
            str = str.Replace("&gt;", ">");
            str = str.Replace("&lt;", "<");
            str = str.Replace("&nbsp;", " ");
            str = str.Replace("&quot;", "\\");
            str = str.Replace("&amp;", "&");
            return str;
        }

回复

使用道具 举报


ADVERTISEMENT

发表于 27-1-2013 11:16 AM | 显示全部楼层
有志气.. 现在的人多数只懂用别人的程序而已..

但不懂里面的技术..
一旦出问题, 也不懂的分析与解决问题..
回复

使用道具 举报

发表于 27-1-2013 11:47 AM | 显示全部楼层
如果要防止 SQL Injection
首先,要把 text 做处理,
甚至是所有的 parameters 都用
html encode 或者 url encode 把特殊符号转换。

另外,要把所有的 error message 都放到 log 而不是 display 在网页上。

string sql_login = "select COUNT(*) as Admin_login from table where username =?loginName and password=?password";

这样做比较死板,可以考虑把 row 另外做处理,

例如 secure question 或者 CAPTCHA 以避免机器式的攻击。


回复

使用道具 举报

 楼主| 发表于 31-1-2013 05:16 PM | 显示全部楼层
flashang 发表于 27-1-2013 11:47 AM
如果要防止 SQL Injection
首先,要把 text 做处理,
甚至是所有的 parameters 都用

没学过耶 .. /.\

能给个案例代码 或是 参考网页吗 ?
回复

使用道具 举报

发表于 31-1-2013 10:58 PM | 显示全部楼层
xin_yao 发表于 31-1-2013 05:16 PM
没学过耶 .. /.\

能给个案例代码 或是 参考网页吗 ?

问题太过含糊,没有说明要什么东西。。。

我猜:

1. 防止 SQL Injection 你有一部分算是做好了。
至少有做到 encode

2. 关于 error message 放到 log 是属于 server settings
需要根据不同的系统做调整。

3. 随便举例

// 先检查 captcha
if (Session["Captcha"].ToString() != txtCaptcha.Text.Trim())
{
Response.Redirect("Failed.aspx";
}
else
{
Response.Redirect("Success.aspx";
}



string sql = “SELECT * FROM TABLE USERLIST WHERE USERNAME=?loginName";
....
myReader = myCommand.ExecuteReader();

myReader.Read();
...

// 这里检查 密码
if( Reader("password".toString() == loginPassword ) {
   // 密码正确。。。
} else {
   // 密码错误。。。 等 10 秒。。。
}


以上是随便 google -- copy paste 的

从 语法,看起来是 c# + mySql
这个组合相对比较少看到,一般上比较不好找例子。
建议考虑 c# + mssql / mssql express / ms access 或者 php +mysql




回复

使用道具 举报

发表于 12-2-2013 02:00 AM | 显示全部楼层
想问大大个问题可以吗?? html的source要怎样去记得?? 真的够力乱啊。。。 如果工作需求需要会html/css jquery的话。。。需要去记得每种source code???
回复

使用道具 举报

Follow Us
 楼主| 发表于 13-2-2013 11:28 AM | 显示全部楼层
周星星同学 发表于 12-2-2013 02:00 AM
想问大大个问题可以吗?? html的source要怎样去记得?? 真的够力乱啊。。。 如果工作需求需要会html/css jque ...

记不得就用电脑记入咯

要用到才去找来 copy paste .  我是这样啦 。

当然如果你要快的话,自然是记在脑袋里面咯 。哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 22-11-2025 06:21 AM , Processed in 0.132042 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表