小编use*_*554的帖子

如果最终用户可以编写自己的Javascript,可以联系SQL DB吗?

我有一个网站,我让用户编辑网站的前端.用户只能访问编辑器,而不能访问其托管的服务器.

用户要求我也允许javascript.这意味着用户可以在前端创建自己的脚本.

我担心的是用户可能会使用它来做恶意的事情.我担心,如果用户知道的东西足够好,他可能会搞砸网站.

我的问题: - 假设用户拥有SQL DB的连接字符串,他是否可以设法在该服务器上执行查询?通常这应该是NO,因为javascript是客户端的权利吗?

我找到了以下代码段:

var connection = new ActiveXObject("ADODB.Connection") ;

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";

connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");

rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
   document.write(rs.fields(1));
   rs.movenext;
}

rs.close;
connection.close; 
Run Code Online (Sandbox Code Playgroud)

假设我的连接字符串看起来像

Data Source=(local);Initial Catalog=TestDB;Application Name=TestDB;Integrated Security=True
Run Code Online (Sandbox Code Playgroud)

我试图让脚本运行,但幸运的是它显示了一个空白页面.但这是因为我可能做错了什么?或者它确实是因为javascript是客户端的,并且不会允许做那种东西?

其他问题: - 我采取了哪些其他风险的例子,允许他在前端使用javascript?如果javascript确实是一个完全客户端的语言,那就意味着他不能冒任何其他风险吗?

javascript sql penetration-testing

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

获取SQL中计数列的总和

我有以下查询

SELECT 
    dtc.coupon_type_company_name,  
    COUNT(*) * dtc.coupon_type_company_coupon_amount AS 'Total_Coupon_To_Be_Used',
    dtc.coupon_type_company_coupon_months_combinable
FROM 
    [dbo].[coupon_type_Company_User] dtcu
JOIN 
    coupon_type_Company dtc ON dtcu.coupon_type_Company_ID = dtc.id
JOIN 
    person p ON dtcu.userID = p.userID
WHERE 
    coupon_type_company_coupon_is_combinable = 1 
    OR coupon_type_company_has_coupon = 1 
    AND dtc.companyID = 1081
    AND p.is_active = 1
GROUP BY
    dtc.coupon_type_company_name,dtc.coupon_type_company_coupon_amount,
    dtc.coupon_type_company_coupon_months_combinable
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

在此处输入图片说明

然而,我想要的只是一列和一行,应该取中间列 ( count(*)*dtc.coupon_type_company_coupon_amount)的总和。

我怎样才能做到这一点并防止在我的代码后端(C#)中这样做

sql t-sql join sum count

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

SQL Query根据日期和月份检索用户

我有下表:

用户

  • 用户身份
  • CompanyID
  • 名称
  • 活跃
  • 加入日期
  • Date_Left

我正在尝试获取查询以获取可计费用户,标准是:

  • 加入结算月份的用户不会被视为可结算用户.
  • 在结算月份离开的用户可结算用户.

我有以下查询:

SELECT * from user u WHERE CompanyID = 1205
AND (p.IsActive = 1 AND MONTH(p.Date_Joined) != MONTH(GETDATE())
OR (p.is_active = 0 AND MONTH(p.Date_Left) = MONTH(GETDATE())
Run Code Online (Sandbox Code Playgroud)

问题是这个查询没有工作,因为它没有检查用户的年份(2017年9月加入的用户不被视为可计费,即使他们应该在2017年加入,而不是今年,这些人在2018年9月创建的人不应被视为可计费.

如何实现年份或优化我的查询?

sql t-sql sql-server datetime date

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

该字符串不是有效的正则表达式

我有一个包含 DNS .zone 文件的文件夹。

我试图返回所有文件和 IP 地址看起来像172.20.*.

我使用以下内容:

Get-ChildItem -Recurse -Path 'C:\Root' | Select-String -Pattern '*172.20.*' | group | select name
Run Code Online (Sandbox Code Playgroud)

但这会返回:

Select-String :字符串 *172.20.* 不是有效的正则表达式:解析 "*172.20.*" - 量词 {x,y} 不接任何内容。

我尝试-SimpleMatch在我的案例中使用这个案例Select-String但没有成功。将字符串括在双引号中也不起作用。

如果我使用实际文本作为我的模式,它可以毫无问题地工作。

我的问题在哪里?

regex powershell

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

Powershell HTML 不格式化

我有一个脚本,其中包含以下行:

$body += "The file " + $item.Name + " is reaching $MaxSize GB! <br> Current Size: <b>" + $SizeInGb.ToString(".00") + " GB </b> <br />"+ "Path to file: " + $Path + "<br /> <br />" 
Run Code Online (Sandbox Code Playgroud)

问题是我的 HTML 没有被渲染/解析(在 Outlook 中)

我的邮件仍然显示为:

The file SRV20150818.VHD.ebxwyq is reaching 2 GB! <br> Current Size: <b>36,64 GB </b> <br />Path to file: \\srv641\Software G\update\ex\SRV565456.VHD.wyq<br /> <br />
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

我用来发送邮件的命令是:

Send-MailMessage -To "test@ds.test" -From "tesbetest@test.test" -Subject $subject -Body $body -SmtpServer 192.168.16.18
Run Code Online (Sandbox Code Playgroud)

powershell parsing html-parsing

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

检查更新语句是否成功

我有以下方法将对象设置为特定状态(它将特定行的列值设置为'4':

C#

 void setObjectToFour(int objectID)
        {
            using (var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString))
            using (var command = new SqlCommand("setObjectToFour", conn)
            {
                CommandType = CommandType.StoredProcedure
            })
            {
                command.Parameters.Add(new SqlParameter("@objectID", SqlDbType.Int)).Value = objectID;
                conn.Open();
                command.ExecuteNonQuery();

            }
        }
Run Code Online (Sandbox Code Playgroud)

SQL:

...
AS
BEGIN
    Update [DB_OBJECT].[dbo].[object_table]
    SET status = 4
    WHERE id = @objectID

END
Run Code Online (Sandbox Code Playgroud)

问题是DB_OBJECT DB不是由我们管理的,而是一个软件的DB.

接下来的问题是上面的查询并不总是有效(而且我们还没弄清楚原因)我正在考虑如果行更新,我们可以"强制"或"检查".

按照以下方式做到这一点是否明智?:

1 - 创建检索对象状态的新C#方法Check和存储过程getStatus

2 - 我将把上面的两种方法都放在a中,do while直到状态为4.

这是一个聪明的方法吗?

c# sql verify

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

SQL:为每个填充列选择多行

我有一张桌子:

  • 是PersonID
  • 名称
  • 电话1
  • 电话2
  • FAX1
  • FAX2

我有这样的记录:

SELECT * FROM Person

1   Test    0123                NULL    0123
2   Test2   NULL    567         789     NULL
3   Test3   0123    NULL        NULL    0123
4   Test4   0123    5555        NULL    
Run Code Online (Sandbox Code Playgroud)

(结果有NULL但也有EMPTY字符串)

我想要选择所有有效数字(每个可用数字的多个记录):

1   Test    0123
1   Test    0123
2   Test    567 
2   Test    789
Run Code Online (Sandbox Code Playgroud)

这可能吗?我选择每个可用值的所有列,并将值存储在最后一列?

sql database sql-server join

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

C#获取上个月的最后一天给出一个月和一年

我正在尝试创建一个返回DateTime对象的方法.

这个日期应该是上个月的最后一天(月份由我给出).

例:

月: 1月(1)

年份: 2019年

我需要什么: 31/12/2018

这就是我所拥有的

   public DateTime getLastDayPrevMonth(int month, int year)
        {
            DateTime date = new DateTime();
            date.Month == month;
            date.Year == year;
            date.AddMonths(-1);
            date.Day = DateTime.DaysInMonth(date.Year,date.Month);

            return date;
        }
Run Code Online (Sandbox Code Playgroud)

但它返回错误:

只有赋值,调用,递增,递减和新对象表达式才能用作语句

我究竟做错了什么?

c# datetime

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

C#中的字符串连接函数使用列表,将连接应用于第一项

我有一个ID的列表.

例:

123

456

789

我想要做的是返回单个字符串中的所有元素,并用'#'分隔它们.

我的结果将是:#123#456#789

我通过执行以下操作尝试了此操作:

//Start with a # at first

seperatedString = "#";

seperatedString = String.Join(" #", list.ToArray());
Run Code Online (Sandbox Code Playgroud)

但我的结果是:123#456#789

为什么我的分隔符不适用于字符串的第一个元素?

c# string list

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

从一个对象中的2个表中获取行

我有两张桌子:

[Company]

 - CompanyID
 - Company_Name 
 - softID

[User]

 - UserID 
 - CompanyID
 - User_Name
Run Code Online (Sandbox Code Playgroud)

在我的后端,我有以下课程:

Company 

 - CompanyID
 - Company Name
 - List<User> CompanyUsers
Run Code Online (Sandbox Code Playgroud)

我只是在使用System.Data.SqlClient.

我的问题是:

如何与用户一起检索公司对象?

我目前在我的数据访问类中有这个方法:

public Company getCompany(int _softID)
        {
            Company temp = new Company();

            conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString);
            SqlCommand command = new SqlCommand(@"SELECT * FROM company WHERE softID = @softID", conn);
            command.Parameters.Add("@softID", SqlDbType.Int).Value = _softID;
            {
                conn.Open();
                SqlDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    temp.CompanyID = int.Parse(reader["companyID"].ToString());
                    temp.companyName = reader["company_name"].ToString();
                }
                conn.Close();
            } …
Run Code Online (Sandbox Code Playgroud)

c# sql oop select object

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

根据语言ID获取文化信息

我有以下代码生成发票行,并包括公司使用它的优惠券的月份:

invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
Run Code Online (Sandbox Code Playgroud)

我的问题是公司有一种公司语言(在数据库中它保存在值1或2下).

1表示荷兰语,2表示法语.

如何编辑我的行以让月份出现在相应的语言中?

我想我需要从:

if(invoice.CompanyLanguage == 1)
{
  invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
}
else
{
    invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
}
Run Code Online (Sandbox Code Playgroud)

我只找到了创建新CultureInfo对象的示例,但没有找到如何以编程方式分配它.我的代码需要怎么样?

c# cultureinfo

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